javascript - 动态更改 Controller 中的 watch

标签 javascript angularjs angularjs-scope

我的 Controller 中有以下 watch 。

var pageFunc = $scope.$watch('page["USER"].number', function(newob,oldob){
    console.log("WATCHING page");
    if(oldob != newob){
        //perform data load
    }
},true);

我的收藏看起来像这样

 page["USER"].number = 20;
 page["TESTER"].number = 60;
 page["BORROWER"].number = 30;
 page["CLIENT"].number = 80;

我需要一个 watch 来观察特定元素的所有这些集合更改。

我已经尝试过类似的事情。

       $scope.$watch('page[" '+$scope.selectedType+'"].number', function(newob,oldob)

其中 $scope.selectedType 在 ng-init 中设置。

但是由于 watch 在 ng-init 之前触发,因此失败。 实现这一目标的最佳方法是什么?

最佳答案

您可以使用函数回调来观察其变化:

$scope.$watch(function() {
  return page[$scope.selectedType].number;
}, function(newValue, oldValue) {
  if(oldValue != newValue) {
    // perform something
  }
});

或者,如果 $scope.selectedType 是一个唯一值,那么我想您可以安全地监视它:

$scope.$watch('selectedType', function(newValue, oldValue) {
  if(oldValue != newValue) {
    // perform something
  }
});

关于javascript - 动态更改 Controller 中的 watch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25734789/

相关文章:

javascript - ng-pluralize "when"绑定(bind)到一个变量

javascript - Angularjs $broadcast 一次,$on 两次

javascript - 隔离范围 - 访问元素上的范围属性

angularjs - Angular.js 传递范围属性作为对指令的引用?

javascript - Spring AngularJS上传文件功能 - 400错误错误请求

Javascript - eval() `{}` 表达式

javascript - 通过 JavaScript 立即更改大小时,CSS 过渡不会动画

javascript - 当我悬停当前选项卡时更改其他选项卡的不透明度

javascript - 将 Jplayer 视频播放与 Angular.JS 集成

javascript - JQuery 函数不适用于初始触发器