动态更改控制器中的手表

时间:2014-09-08 23:52:22

标签: javascript angularjs angularjs-scope

我的控制器中有以下手表。

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;

我需要一只手表来观看特定元素的所有这些集合更改。

我尝试过这样的事情。

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用函数回调来查看其更改:

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