在我的控制人變更情況我有一個名爲datetime
變量,它由計時器每秒鐘更新。我需要做一些工作的時候一天變化,所以我註冊了以下守望者:
$scope.$watch("datetime | date: 'MM/dd/yyyy'", function (newDate, oldDate) {
console.log(newDate === oldDate);
}, true);
但這監聽器被稱爲與newDate
在開始執行時等於oldDate
。有誰知道會發生什麼?改變datetime
的代碼如下:
var timeoutId;
function startTimer() {
timeoutId = $timeout(tick, 1000);
timeoutId.then(startTimer);
}
function stopTimer() {
$timeout.cancel(timeoutId);
timeoutId = undefined;
}
function tick() {
$scope.datetime = new Date();
}
$scope.init = function() {
startTimer();
}
$scope.init()
被稱爲ng-init
。初始加載期間
你檢查什麼'datetime'的價值是什麼?這很可能是'undefined'... – callmekatootie
順便說一下,出於性能方面的原因,我會將「| date:'MM/dd/yyyy'」部分移到函數內部。現在,每當'$ digest'發生轉換時 - 當$ watch被選中時。但是,只有在實際使用該值時才需要進行轉換。 – KayakDave