我的服务职能如下:
(function(){
angular.module('app.system')
.factory('Poller', function($http, $timeout) {
var data = {
eventObj: null,
spinner:false
};
var poller = function() {
$http.get('php file').then(function(r) {
var ev = r.data;
if(ev.length > 0)
{
data.eventObj = ev;
data.spinner = true;
if(ev.image != null && ev.image != "")
{
data.eventObj = ev;
}
}
else {
data.spinner = false;
}
$timeout(poller, 1000);
});
};
poller();
return {
data :data,
};)()
这是我的工厂。在控制器中,我所做的事情如下:
1 $scope.dataPoller = Poller.data;
2 var vm = this;
3 vm.event = Poller.data.event;
4 vm.spinner = Poller.data.spinner;同时,在控制器的顶部:
.run(function(Poller) {});
第1行-我看到用户界面每500 it更改一次,但是第2-4行根本不更新--只有在开始时才更新,例如,第1行中的vm.event总是空的,它没有更新。
我该怎么解决呢?
我需要更新控制器或其他服务中的数据,然后返回控制器并更新视图,当然轮询者需要每500 ms发送一次新数据。
发布于 2017-01-15 22:36:35
vm.event = Poller.data.event;
vm.spinner = Poller.data.spinner;在创建控制器时,只执行一次。它用Poller.data.event具有的值将化为泡影。旋转器也一样。由于视图显示vm.event,而且由于该值从未更改,所以您的视图不会更改。
相反,使用
vm.pollerData = Poller.data;在视图中,使用
{{ vm.pollerData.event }}每当$http响应返回时,角将重新计算vm.pollerData.event的值,并且由于值已经更改,视图将更新。
https://stackoverflow.com/questions/41664427
复制相似问题