gpt4 book ai didi

angularjs - 在 angularJS 服务中收到新项目时重新加载 ionic ng-repeat 列表

转载 作者:行者123 更新时间:2023-12-04 15:34:00 25 4
gpt4 key购买 nike

我有这个 html(片段查看 ng-repeat):

  <ion-list show-delete="data.showDelete" id="deleteme">
<div class="list list-inset searchlist" >
<label for="searchText" class="item item-input searchlabel" >
<i class="icon ion-search placeholder-icon"></i>
<input type='text' ng-model='searchText' placeholder="Search"/>
</label>
</div>

<ion-item class="item-icon-left item-icon-right" ng-repeat="message in messageList | orderBy:'date':true | filter:searchText track by $id($index)"
ng-click="openMessage(message.id)" >

<i class="icon ion-record" style="color:#8EBF3F;font-size:15px;height:70%" ng-show='message.mesgRead == false'></i>
<i class="" ng-show='message.mesgRead == true'></i>

<h2 class="messagecontent" >{{message.mesgContent}} </h2>

<p class="messagedate">{{message.displayDate}} </p>
<i class="icon ion-chevron-right icon-accessory"></i>

<ion-option-button class="button-assertive" style="line-height:73px;" ng-click="deleteMessage(message)">
Delete
</ion-option-button>

</ion-item>
</ion-list>

这是 Controller (代码片段):
  .controller('MessagesCtrl', function($scope, MessagesService, $timeout, ProfileService, $window, $filter, $sce, $ionicLoading, $ionicPopup) {

$scope.messageList = "";

console.log("check for messages...");

MessagesService.loadFromMessageDB().then(function (dbMessages) {

$scope.messageList = dbMessages;

});

所以效果很好,我的 ng-repeat人口稠密。

我正在使用 PushPlugin,所以当我收到推送通知时,这个回调位于我的 MessagesService 中。被触发:
  onNotificationResponse: function(sender, message, msgId, msgType, msgUrl) {
console.log("myApp.onNotificationResponse:" + message + " msgUrl:" + msgUrl);

var nowDate = new Date().getTime();
nowDate = moment(nowDate).format("ddd, Do MMM, H:mm");

var jsDate = new Date();

var tmpMessage = new myApp.Message(msgId, nowDate, msgType, sender, jsDate, message, msgUrl, false);

messages.unshift(tmpMessage);
messageDB.save(tmpMessage);
},

我的问题是我不知道如何刷新我的 ng-repeat列表。我试过添加 $rootScope.$apply();onNotificationResponse功能,但什么也没做。

那么如何将这条新消息添加到我的 ng-repeat列表?

更新:

通过将其添加到 onNotificationResponse 函数:
  $rootScope.$broadcast('newMessage', messages);

然后这个给 Controller :
  $scope.$on('newMessage', function(event, messages) {
console.log("WOW, a new message!!! ");

$scope.messageList = messages;
$scope.$apply();

});

那个有效!但是 - 这会将我的新消息添加到 ng-repeat 列表的底部。如何将消息添加到顶部?

最佳答案

最后我要做的是改变这部分:

  var jsDate = new Date();

对此:
  var jsDate = new Date().getTime();

根据其中一位 angularJS 人员的说法,getTime() 返回一个在使用 orderBy/sorting 时效果更好的数字。

希望这可以帮助其他人将来!

关于angularjs - 在 angularJS 服务中收到新项目时重新加载 ionic ng-repeat 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24548763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com