我正在收件箱中加载一个邮件列表,列表中最近的5条消息。 我无法刷新页面,以便页面始终显示列表中的最新5条消息。
消息页面在第一次打开时才调用该服务。我该如何回忆这项服务?对于像user这样的其他服务,我一直使用$ interval来更新$ scope.data
每次打开服务都可以召回服务吗?
模板
<div class="list">
<ul ng-controller="MessagesCtrl">
<li ng-repeat="message in messages.data" id="message{{message.id}}" class="item">
<a href="#" class="messageIcon">{{message.user}}</a>
<p>{{message.title}}</p><a ng-click="deleteItem($index)">x</a>
</li>
</ul>
服务
angular
.module('starter.controllers', [])
.factory("Messages", function() {
var Messages = {};
return {
getData: function($http) {
return $http.get("http://website.com/index.php/id/user/get_message/i").
success(function(response) {
/// console.log(JSON.stringify(response));
Messages.data = response.data;
return Messages;
}).error(function(data, status, headers, config) {
// log error
});
}
}
});
控制器
angular
.module('starter.controllers', [])
.controller('MessagesCtrl', function($scope, Messages, $http) {
Messages
.getData($http)
.then(function(data) {
$scope.messages = data;
});
});
答案 0 :(得分:0)
您可以执行以下操作之一:
1)定期使用服务中的$ interval轮询getdata函数。然后在控制器中的$ scope.messages上编写一个监视,每次值发生变化时,UI都会更新。
2)使用websocket始终保持数据的实时性。我不确定这将是最简单的选择。根据您期望的流量,甚至可能无法扩展。
如果你不熟练使用websockets,我个人会选择第一个选项。