angular.js - $watch监视下拉框,网页刷新时会自动执行一次,如何禁止自动执行?
漂亮男人
漂亮男人 2017-05-15 17:04:22
0
3
906

详细描述:
$watch监视一个下拉框,期望情况是只有当用户点击下拉框中的选项时,前端才请求后端更新数据。

目前的问题是:
当网页加载时,下拉框第一次出现,$watch会自动执行一次,ng的机制认为加载就是一次用户的点击。

希望了解如何禁止这种情况的$watch自动执行

漂亮男人
漂亮男人

reply all(3)
迷茫

Thanks for the invitation.

First of all, can I correct a small flaw in wording.

You said "$watch monitors a drop-down box", ng是一个实现数据双向绑定的,具有声明式API的框架,这里的$watch是不可能去监视一个DOM元素下拉框that's right. The appropriate wording can be written as "an expression monitored by $watch that points to the selected value of the drop-down box" which is more accurate (friends who are good at Chinese can further optimize).

When asking questions, we tend to focus too much on the answers we want to know and ignore the way of expression. As a result, we often end up in vain. This type of question is very common in SF. The questioner’s description is vague, making it impossible to answer. In fact, I can still understand the description of the question, but I just want to say a few more words because of my feelings.

Back to the subject, since you don’t want to process the data initialization time$watch, you can judge it like this

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

scope.$watch('name', function(newValue, oldValue) {
  if(newValue == oldValue) return;
  scope.counter = scope.counter + 1;
});
習慣沉默

Use ngChange to avoid initialization calls

Attention:

  • Needs to be used together with ngModel

  • Using a program to change the value of ngModel will not trigger 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, when the user leaves the form element or presses the return key).

ngChange Documentation

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template