$watchCollection
은 $로 시작하는 속성의 변경 사항을 무시할 수 있습니까? 비교를 위해 angular.equals
에 의존하므로이 동작은 이미 깊은 $watch
을 사용하여 발생합니다.
이상적으로는 $watchCollection
이 개체를 얕게 보는 것이 좋습니다 (그리고 유일한 방법). 다른 행동에 정당성이 있습니까?
예 각도 $watch
소스 코드 코멘트에서 촬영
$scope.foo = {
$bar: 'someValue',
baz: 123456
};
$scope.$watch('foo', function() {
console.log('watch');
}, true);
$scope.$watchCollection('foo', function(){
console.log('watchCollection');
});
// logs 'watch'
// logs 'watchCollection'
$scope.foo.baz = 654321;
// logs 'watchCollection'
$scope.foo.$bar = 'changed'
나는 $ watchCollection'은'믿는 확실히이다 arrayLike 객체를 감시합니다. '$ watchCollection은 객체를 얕게 보는 데 선호되는 유일한 방법입니다 '? 나는 당신이 얕은 감시에 제 3의 논쟁없이 다만 시계를 사용할 수 있었다는 것을 짐작한다. – PSL
세 번째 인수가없는 @PSL 시계는 객체 참조가 동등하지 않은지 검사합니다. 그래서'var a = {};'와'a.newProp = 1; 'a == a;가 여전히 'true'이기 때문에 트리거하지 않습니다. 그리고 $ watchCollection도 arrayLike 객체에 국한되지 않습니다. ( –
아, 잊어 버렸습니다 ... – PSL