我想知道是否可以只查看对象数组中的特定键,而不是
$scope.$watch('data', function (newValue) {
是否可以做类似
的事情 $scope.$watch('data.name', function (newValue) {
这将是一个数组,所以如果任何数据[i] .name项改变它会触发所需的功能?
不知道这样的事情是可能的。谢谢你的阅读!
答案 0 :(得分:3)
您有两个选择:
1)浅看Array
($watchCollection
),如下所示:
$scope.$watchCollection('data.name', function (newValue) {...});
2)深入监视Array
,如下所示:
$scope.$watch('data.name', function (newValue) {...}, true);
使用选项1,只有在添加/删除元素时才会触发$watch
函数,但如果要对其中一个Array
元素进行更改则不会触发。
另一方面,对于选项2,$watch
函数将在每次有任何更改时运行。
答案 1 :(得分:2)
以下是您http://blogs.microsoft.co.il/choroshin/2014/03/26/angularjs-watch-for-changes-in-specific-object-property/尝试做的一个示例。
var app=angular.module('App', []);
function ctrl($scope){
$scope.count=0;
$scope.people = [{id:1,name: "bill"}, {id:2,name: "jim"}, {id:3,name: "ryan"}]
$scope.$watch(function($scope) {
return $scope.people.
map(function(obj) {
return obj.name
});
}, function (newVal) {
$scope.count++;
$scope.msg = 'person name was changed'+ $scope.count;
}, true);
}
这可以通过返回obj.name。
的map函数看到每个对象上的name属性