$ scope。$监视数组中对象的某些部分

时间:2015-06-23 08:14:33

标签: angularjs

下面有一个数组,它在其中存储数据和样式的混合。

用户可以添加,删除或重新排序其元素,以及修改元素的值,因此我需要使用$scope.$watch进行观察,以便在修改后执行某些操作。

但是,如果只是其样式发生变化,我也不想收到通知。是否有更好的做法来安排我的数据,只有在价值发生变化时才收到通知,谢谢。

Plunker

[{
  value: 1,
  selected: true,
  width: '100px'
}, {
  value: 2,
  width: '150px'
}, {
  value: 3,
  width: '100px'
}];

2 个答案:

答案 0 :(得分:1)

这是仅在样式更改时才能观看的示例。

http://plnkr.co/edit/GAG40qBkD4eq3GbKBMhc?p=preview

$scope.$watch(function($scope) {
    return $scope.data.
    map(function(data) {
        return data.width;
    });
}, function(newValue) {
    console.log('Modified width' + newValue);
}, true);

我认为你必须在必要的属性上创建手表。

来源: http://blogs.microsoft.co.il/choroshin/2014/03/26/angularjs-watch-for-changes-in-specific-object-property/

答案 1 :(得分:0)

使用$watch作为第三个参数调用true

 $scope.$watch('data', function(newValue, oldValue) {
    console.log(newValue, oldValue);
  },true);