在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时效果更好的数字. 希望以后能帮助别人! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- scala – 从Typesafe安装的Play 2.0中缺少’debug’命令
- 如何从vim中删除默认的空缓冲区?
- Bash-Scripting – Munin插件不起作用
- Angular 2:如何通过CSS Selector在@ViewChild中查找子元素
- PowerShell遍历文件夹中的xml文件并替换目标字符串
- 如何获取Scala编译器插件的日志输出?
- 为何 Angular 4 是 Angular 2 的下一个版本, 为什么没有 An
- WebService-----Axis2搭建WebService项目
- angularjs – Angular-Meteor – 如何在基于包的设计中包含
- WebService学习系列(二)------构造自己的WebService服务器