반응형
AngularJS는 객체 배열의 데이터 변경 감시
쇼핑 카트를 구현하고 있는데 데이터를 localStorage에 저장하려고 합니다.변수를 보고 싶다.$scope.cart
localStorage를 갱신할 수 있도록 변경해 주세요.
카트 변수는 다음과 같습니다.
[{'name':'foo', 'id':'bar', 'amount': 1 },...]
이것이 시계의 코드입니다.
$scope.updateCart = function(){
localStorageService.add('cart',JSON.stringify($scope.cart));
alert('cart updated');
};
$scope.$watch($scope.cart, $scope.updateCart(), true);
사용자가 모델을 변경하는 HTML입니다.
<li ng-repeat="item in cart">
{{item.name}} <input type="text" ng-model="item.amount">
</li>
다음 코드에서는updateCart()
메서드는 트리거되지 않습니다.내가 뭘 잘못하고 있는지 모르겠어.확인해보니$scope.cart
변수는 변경되었지만 업데이트가 트리거되지 않았습니다.
$watch
첫 번째 인수에서는 문자열 또는 함수 파라미터만 평가합니다.변경하다$watch
다음과 같습니다.
$scope.$watch('cart.name + cart.id + cart.amount', $scope.updateCart());
또는
$scope.$watch('cart', $scope.updateCart, true);
워치식의 첫 번째 파라미터로 변수를 사용하는 것은 일반적인 실수입니다.
위해서$scope.cart
, 스트링을 사용합니다.cart
:
$scope.$watch('cart', function () {...}, true)
AngularJs는 새로운 시계 방식을 가지고 있어$watchCollection
이것은 기본적으로 와 같습니다.$watch
오브젝트 등호화 옵션을 true로 설정하면 속성 또는 배열 항목의 변경을 감시할 수 있습니다.
$scope.$watchCollection('cart', function () {...});
문서: $watchCollection.
변화를 꾀하다
$scope.$watch($scope.cart, $scope.updateCart(), true);
로.
$scope.$watch('cart', $scope.updateCart(), true);
$watch는 첫 번째 인수로 문자열 또는 함수 파라미터만 평가합니다.
언급URL : https://stackoverflow.com/questions/17417597/angularjs-watch-array-of-objects-for-data-change
반응형
'programing' 카테고리의 다른 글
'this' 또는 '$scope' 중 어느 쪽을 사용해야 합니까? (0) | 2023.03.22 |
---|---|
오버플로우 정렬 단계 버퍼링된 데이터 사용량이 내부 제한을 초과합니다. (0) | 2023.03.22 |
JavaScript:객체에서 읽기 쉬운 포맷된 JSON을 직접 생성하려면 어떻게 해야 합니까? (0) | 2023.03.17 |
리액트 프런트엔드를 전개할 때 API 서버 URL을 삽입하는 방법 (0) | 2023.03.17 |
레코드 타입은 무엇입니까? (0) | 2023.03.17 |