我可能有不同的頁面應用程序有自己的控制器。其中一個有$ interval函數,比如說一個計時器。點擊一個按鈕將啓動這個間隔功能,每秒更新一次。我想有是的,我希望能夠去任何其他網頁在我的應用程序(調用不同的控制器),但我希望我的區間繼續運行,直到我從第一控制器明確停止它。 A rootScope間隔可以這麼說。我該怎麼做?
編輯:感謝Chris和Patrick我現在有一個簡單的服務,看起來是這樣的:
.service('TimerService', function($interval) {
var promise;
var timerSeconds = 0;
this.start = function() {
promise = $interval(function() {
timerSeconds++;
}, 1000);
};
this.stop = function() {
promise.cancel(interval);
timerSeconds = 0;
};
this.getTimer = function() {
return timerSeconds;
}
})
我也存儲在這個服務我的電流值(timerSeconds)。但是,我怎樣才能將這個值同步到我的控制器?該服務增加了timerSeconds,並且在我的控制器開始處,我通過它的getTimer()函數從該服務中讀取它,但它顯然不會在我的控制器上更新。 如何將此服務屬性與我的本地屬性同步?
編輯:
當我定義我的服務屬性爲對象和timerSeconds爲對象的內部編號(好像原語無法同步):
var timer = {seconds : 0};
this.getTimer = function() {
return timer;
}
,並從中獲取該對象我控制器通過該吸氣劑:
vm.timer = TimerService.getTimer();
它們全部同步。
所以在服務運行在您的控制器更新此數據對象之間共享一些信息,但如果你改變你的控制器,並調用它會發生什麼再次?您的數據和計數對象將會丟失,因爲它們是在您的控制器中定義的。 。或者我想念某事? – akcasoy
我試圖將數據對象添加到rootScope並從那裏讀取它。它有點作用,但它總是不那麼好同步vm和rootScope你有任何其他的建議嗎? – akcasoy