반응형
angularjs $watch old 값과 new 값이 동일합니다.
제 의도는 범위 내에서 모델을 보고 오래된 가치와 새로운 가치를 구별하는 것입니다.
그러나 아래 코드에서 이전 값과 새 값이 모두 동일하다는 것을 알게 되었습니다.
app.controller('MyCtrl', function($scope, $timeout){
$scope.markers = {};
$scope.$watchCollection('markers', function(newValue, oldValue){
console.log('being watched oldValue:', oldValue, 'newValue:', newValue);
});
$timeout( function() {
$scope.markers.foo = 1;
}, 500);
$timeout( function() {
$scope.markers.bar = 2;
}, 500);
});
출력:
being watched oldValue: Object {} newValue: Object {} script.js:6
being watched oldValue: Object {foo: 1} newValue: Object {foo: 1} script.js:6
being watched oldValue: Object {foo: 1, bar: 2} newValue: Object {foo: 1, bar: 2}
왜 같은지, 고의적인 거라면 왜?
이것은 코드입니다.http://plnkr.co/edit/rfMCF4x6CmVVT957DPSS?p=preview
사용할 수 있습니다.$watch
오히려 효과가 있는 것 같아요오브젝트의 모든 속성도 (실행 중) 감시하려면true
워치의 세 번째 파라미터로 지정합니다.이것으로 철저한 감시 태세를 갖추게 된다.
JS:
app = angular.module('myApp',[]);
app.controller('MyCtrl', function($scope, $timeout){
$scope.markers = {};
$scope.$watch('markers', function(newValue, oldValue){
console.log('being watched oldValue:', oldValue, 'newValue:', newValue);
}, true);
$timeout( function() {
$scope.markers.foo = 1;
}, 500);
$timeout( function() {
$scope.markers.bar = 2;
}, 500);
});
새로운 값과 오래된 값이 동일한지 확인하고(값에서) 이 경우 프로세스를 건너뛰면 예기치 않은 동작을 방지할 수 있습니다.이를 위해 angular.equals를 사용할 수 있습니다.다음은 예를 제시하겠습니다.
JS:
$scope.$watch('myObject', function(newValue, oldValue){
if(angular.equals(newValue, oldValue)){
return; // simply skip that
}
});
이것은 버그입니다.
https://github.com/angular/angular.js/issues/2621
고쳐지지 않은 것 같아요.
값은 파라미터로 전달됩니다.
$scope.$watch('foo', function (newValue, oldValue) {
// ...
}
언급URL : https://stackoverflow.com/questions/20751954/angularjs-watch-old-value-and-new-value-are-the-same
반응형
'programing' 카테고리의 다른 글
문자열에서 JSON 개체로 변환 Android (0) | 2023.02.26 |
---|---|
Web API 매개 변수는 항상 null입니다. (0) | 2023.02.26 |
React Native에는 '가상 DOM'이 있습니까? (0) | 2023.02.26 |
AngularJS에서 양방향 필터링을 수행하는 방법은 무엇입니까? (0) | 2023.02.26 |
서버 마이그레이션 후 이미지 파일 이름으로 인코딩되는 특수 문자 (0) | 2023.02.26 |