我正在实现一个购物车,并希望将数据存储在localStorage中。我想观察变量$scope.cart的变化,以便可以更新localStorage
$scope.cart
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变量是否更改,但未触发更新。
updateCart()
$watch仅在其第一个参数中计算字符串或函数参数。$watch像这样改变你:
$watch
$scope.$watch('cart.name + cart.id + cart.amount', $scope.updateCart());
要么
$scope.$watch('cart', $scope.updateCart, true);
请参阅参考API