本文介绍了$腕表初始化后,直接引发的,为什么呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么直接触发负荷和哪能prevent呢?

 函数MyCtrl($范围){
    //初始化范围瓦尔
    $ scope.data_copy = {};    //如果data_copy变化...
    $范围。$表(data_copy功能(为newValue,属性oldValue){        警报($手表触发!);    },真正的);
}


解决方案

在第一次运行这两个值(为newValue 属性oldValue )是相等的,所以你可以很容易通过检查平等逃避它:

  $范围。$表(data_copy功能(为newValue,属性oldValue){
  如果(为newValue ===属性oldValue){
    返回;
  }
  警报($手表触发!);
});

Why does $watch trigger directly after page load and how can I prevent this?

http://jsfiddle.net/dcSRu/2/

function MyCtrl($scope) {
    // Init scope vars
    $scope.data_copy = {};

    // If data_copy changes...
    $scope.$watch("data_copy", function(newValue, oldValue) {

        alert("$watch triggered!");

    }, true);
}
解决方案

On first run both values (newValue and oldValue) are equal, so you may easily escape it by checking for equality:

$scope.$watch("data_copy", function(newValue, oldValue) {
  if(newValue === oldValue){
    return;
  }
  alert("$watch triggered!");
});

这篇关于$腕表初始化后,直接引发的,为什么呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 12:55