我正在實施一個購物車並希望將數據存儲在localStorage中。 我想觀察的變量$scope.cart
的變化,這樣我就可以更新localStorage的AngularJS監視數據變化的對象數組
的車變量是這樣的:
[{'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
變量確實發生了變化,但沒有觸發更新。
在第一個例子中不是'true'是不必要的嗎? –
$ scope.updateCart將永遠不會觸發,如果您將它傳遞給括號,因爲您會將該函數的結果傳遞給$ watch,在此情況下該函數將被定義爲$ watch。正確的方法是:$ scope。$ watch('cart',$ scope.updateCart,true); – SKuijers
'cart'是一個對象數組,它沒有像'amount'這樣的屬性 – Hovo