angular.js - $watch監視下拉框,網頁刷新時會自動執行一次,如何禁止自動執行?
漂亮男人
漂亮男人 2017-05-15 17:04:22
0
3
905

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

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

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

漂亮男人
漂亮男人

全部回覆(3)
迷茫

謝邀。

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

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

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

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

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

雷雷


雷雷
習慣沉默

使用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 文件

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板