加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 07:01:10 所属栏目:安全 来源:网络整理
导读:我有这个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=
我有这个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('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,sender,jsDate,msgUrl,false);

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

我的问题是我不知道如何刷新我的重复列表.我试过添加$rootScope.$apply();到onNotificationResponse函数,但没有做任何事情.

那么如何将此新消息添加到ng-repeat列表中?

更新:

通过将此添加到onNotificationResponse函数:

$rootScope.$broadcast('newMessage',messages);

然后这个到控制器:

$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时效果更好的数字.

希望以后能帮助别人!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读