我看了一些关于如何正确执行此操作的示例,但绝对不会在我的结尾更新。我放置了一个断点,以确保它正在更新并通过工厂中的定时器并正确更新。我不应该用$ watch来对吗?如果有人能帮我弄清楚发生了什么,现在就可以帮助我解决头痛问题。Angular:通过工厂变量更新控制器作用域变量
厂
app.factory('FoundationSystemStatusFactory', ['$timeout', '$q', 'SystemStatusFactory', function ($timeout, $q, SystemStatusFactory) {
var service = {};
service.Count = 0;
service.Ping = 0;
service.PollingTest = function() {
$timeout(function() {
SystemStatusFactory.PingIP('www.google.com')
.then(function (data) {
service.Ping = data.data;
service.Count++;
}, function (data) {
service.Ping = data.data;
});
service.PollingTest();
}, 2000);
}
return service;
}]);
控制器
FoundationSystemStatusFactory.PollingTest();
$scope.ping = FoundationSystemStatusFactory.Ping; //NOT UPDATING
$scope.count = FoundationSystemStatusFactory.Count; //NOT UPDATING
编辑:尝试作为服务,仍然无法得到它的工作:
var self = this;
self.Count = 0;
self.Ping = 0;
self.PollingTest = function() {
$timeout(function() {
SystemStatusFactory.PingIP('www.google.com')
.then(function (data) {
self.Ping = data.data;
self.Count++;
}, function (data) {
self.Ping = data.data;
});
self.PollingTest();
}, 2000);
}
您是否尝试过使用服务,而不是工厂? –
@MedetTleukabiluly现在不让我试试。我一直在查找两者之间的差异..而不是它被实例化的方式,我仍然对两者之间的差异感到困惑。 – user1189352
简单工厂返回数据,服务修改数据 –