我看了一些關於如何正確執行此操作的示例,但絕對不會在我的結尾更新。我放置了一個斷點,以確保它正在更新並通過工廠中的定時器並正確更新。我不應該用$ 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
簡單工廠返回數據,服務修改數據 –