angularjs - $watch是在init之后直接触发的,为什么呢?

标签 angularjs

为什么$watch页面加载后直接触发,如何防止这种情况发生?

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);
}

最佳答案

第一次运行时,两个值(newValueoldValue)相等,因此您可以通过检查相等性轻松地转义它:

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

PLUNKER

关于angularjs - $watch是在init之后直接触发的,为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15875105/

相关文章:

javascript - 如何仅在字段为 $dirty 时应用 ng-pattern

AngularJS:如何通过深度链接启用 $locationProvider.html5Mode

javascript - AngularJs $cookies 不适用于过期时间

asp.net mvc 使用 html5mode 和路由托管 Angular 应用程序

javascript - 使用授权 header 时出现 CORS header 错误

angularjs - 尝试使用 ng-repeat 创建 ng-model 绑定(bind)

angularjs - 用于 Https 协议(protocol)上的 angularJs 应用程序的带有 HttpOnly 标志的 Cookie

javascript - 开发第三方小部件——Angular vs jQuery vs plain old JS

javascript - Angular : applying filters to a ng-repeat

javascript - 带有 angular-cli 的 ASP.NET WebApi