簡體   English   中英

Angular $ scope。$ watch newVal!== oldVal

[英]Angular $scope.$watch newVal !== oldVal

我一直在做一個我繼承的角項目,我無法聯系原作者。 有這個表達我不確定,我想知道是否有人可以幫我理解代碼:

$scope.$watch(calculator.value, function(newVal, oldVal) {
    if(newVal !== oldVal) {
        i = newVal;
        updateCalculation();
    }
});

令我困惑的是這行代碼: newVal !== oldVal 知道為什么需要這樣的檢查嗎?

范圍的$watch方法將始終至少執行一次回調。 它第一次執行新舊值是相同的。

$scope.$watch(calculator.value, function(newVal, oldVal) {
    if(newVal === oldVal) {
       console.log('First time watcher is executed');
    }
    if(newVal !== oldVal) {
       console.log('Watcher called because values changed.');
    }
});

您提供的示例表明,只有在值發生更改時才會執行updateCalculations() 這不是第一次召喚觀察者。

即使值沒有改變,也會在$ digest循環的每一輪調用$ watch。 所以我只能假設只有在值改變時才應該調用updateCalculation()。

  1. 范圍上有一個值,如$ scope.calculator.value = 0;
  2. Watch會調用每個摘要,但可能是這個值沒有改變
  3. 因此,將舊值與新值匹配,如果只有任何更改,則調用方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM