我的 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/