programing

AngularJS는 객체 배열의 데이터 변경 감시

i4 2023. 3. 17. 19:37
반응형

AngularJS는 객체 배열의 데이터 변경 감시

쇼핑 카트를 구현하고 있는데 데이터를 localStorage에 저장하려고 합니다.변수를 보고 싶다.$scope.cartlocalStorage를 갱신할 수 있도록 변경해 주세요.

카트 변수는 다음과 같습니다.

[{'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);

참조 API 참조

워치식의 첫 번째 파라미터로 변수를 사용하는 것은 일반적인 실수입니다.

위해서$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

반응형