搜尋

首頁  >  問答  >  主體

angular.js - $watch監視下拉框,網頁刷新時會自動執行一次,如何禁止自動執行?

詳細描述:
$watch監視一個下拉框,期望情況是只有當使用者點選下拉框中的選項時,前端才要求後端更新資料。

目前的問題是:
當網頁載入時,下拉框第一次出現,$watch會自動執行一次,ng的機制認為載入就是一次使用者的點擊。

希望了解如何禁止這種情況的$watch自動執行

漂亮男人漂亮男人2783 天前941

全部回覆(3)我來回復

  • 迷茫

    迷茫2017-05-15 17:06:22

    謝邀。

    首先,我可否修正一個用詞的小瑕疵。

    你說“$watch監視一個下拉框”,ng是一个实现数据双向绑定的,具有声明式API的框架,这里的$watch是不可能去监视一个DOM元素下拉框的。合適的用詞可以寫作"$watch監視的一個指向下拉框所選值的表達式"更為準確(語文好的朋友可以再優化)。

    在提問時,我們往往過分關注自己想知道問題的答案,而忽略表達方式,結果經常無疾而終,這類題目在sf中非常常見,提問人描述含糊其辭,令人無從做答。其實題主的描述還能看懂,只是有感而發多說幾句。

    言歸正傳,既然不想對資料初始化的那一次$watch做處理,那可以這樣判斷一下

    $scope.$watch('表达式', function(newVal, oldVal){
        //当之前值和当前值相同,或者之前值为null或undefined时
        if(newVal === oldVal || oldVal == null){
            //不执行任何操作
            return;
        }
        
        //你的正常代码,写这里
    });

    回覆
    0
  • PHPz

    PHPz2017-05-15 17:06:22

    雷雷


    雷雷

    回覆
    0
  • 習慣沉默

    習慣沉默2017-05-15 17:06:22

    使用ngChange可以避免初始化的呼叫

    注意:

    • 需要結合ngModel一起使用

    • 使用程式更改ngModel的值並不會觸發ngChange

    Evaluate the given expression when the user changes the input. The expression is evaluated immediately, unlike the JavaScript onchange event which only triggers at the end of a change (usually, en the user leaves the remot.

    ngChange 文件

    回覆
    0
  • 取消回覆