1
任何人都可以解釋爲什麼$ watch()爲我的範圍解僱,即使newValue == oldValue在這裏?
scope.$watch('element', function(newValue, oldValue) {
if (newValue == oldValue) {
console.log(newValue == oldValue);
return;
}
}, true);
「真」,且輸出NEWVALUE和屬性oldValue是具有相同的值的兩個對象:
{"formID":"536826128a1c00617d3e4c5f","elementType":"TextFieldElement","required":false,"note":"","label":"","fieldName":"","_id":"5368261b8a1c00617d3e4c60","__v":0,"$$hashKey":"01B"}
{"formID":"536826128a1c00617d3e4c5f","elementType":"TextFieldElement","required":false,"note":"","label":"","fieldName":"","_id":"5368261b8a1c00617d3e4c60","__v":0,"$$hashKey":"01B"}
我從傳遞「真」的第三個參數$腕錶docs理解比較對於使用angular.equals()的對象相等。我還用angular.equals()進行了測試,並且它也返回true。那麼爲什麼$ watch()被觸發呢?
我正在使用AngularJS v1.2.16。
是否只有一次?這確實發生在init上,文檔說通過比較oldVal和newVal來檢查它。 – aet
是的,它似乎只發生在初始化,這似乎是問題。我在文檔中忽略了這一點。在監聽器中使用===檢查解決了這個問題。如果您想在此發佈答案,我很樂意將其標記爲答案。 –
謝謝!很高興我能幫上忙。 – aet