一尘不染

AngularJS监视对象数组以进行数据更改

angularjs

我正在实现一个购物车,并希望将数据存储在localStorage中。我想观察变量$scope.cart的变化,以便可以更新localStorage

cart变量看起来像这样:

[{'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变量是否更改,但未触发更新。


阅读 395

收藏
2020-07-04

共1个答案

一尘不染

$watch仅在其第一个参数中计算字符串或函数参数。$watch像这样改变你:

$scope.$watch('cart.name + cart.id + cart.amount', $scope.updateCart());

要么

$scope.$watch('cart', $scope.updateCart, true);

请参阅参考API

2020-07-04