私はショッピングカートを実装していて、そのデータをlocalStorageに保存したいと考えています。 私はカートの変数は次のようになりますのlocalStorageAngularJSのデータ変更用オブジェクト配列
を更新できるように変更するための変数$scope.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
変数が変更されたことを確認しますが、更新はトリガーされませんでした。
最初の例では「true」は不要ですか? –
$ scope.updateCartは、関数の結果をこの場合は未定義の$ watchに渡すので、かっこで渡すと決して起動しません。正しい方法は次のとおりです:$ scope。$ watch( 'cart'、$ scope.updateCart、true); – SKuijers
'cart'はオブジェクトの配列ですが、' amount'のようなプロパティはありません – Hovo