Javascript 动态更改控制器中的手表

Javascript 动态更改控制器中的手表,javascript,angularjs,angularjs-scope,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

我的控制器里有下面的手表

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内设置

但由于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
  }
});

若我查看页面,若任何类型被更改,它将被触发。例如-page[“USER”]或page[“CLIENT”]我需要的是在任何给定的时间只监视特定类型的集合。例如-watch$scope.$watch('page[“CLIENT”].number')或$scope.$watch('page[“USER”].number'),我不能将它们硬编码为单独的手表,因为这个集合可能会增长。