Sto implementando un carrello acquisti e desidero memorizzare i dati in localStorage. Voglio guardare la variabile $scope.cart
per il cambiamento in modo da poter aggiornare il localStorageAngularJS controlla la matrice di oggetti per la modifica dei dati
La variabile carrello si presenta così:
[{'name':'foo', 'id':'bar', 'amount': 1 },...]
Questo è il codice per l'orologio.
$scope.updateCart = function(){
localStorageService.add('cart',JSON.stringify($scope.cart));
alert('cart updated');
};
$scope.$watch($scope.cart, $scope.updateCart(), true);
Questo è l'HTML in cui l'utente cambia il modello.
<li ng-repeat="item in cart">
{{item.name}} <input type="text" ng-model="item.amount">
</li>
Con questo codice, il metodo updateCart()
non viene mai attivato. Non sono sicuro di cosa sto sbagliando. Controllo che la variabile $scope.cart
sia stata modificata, ma l'aggiornamento non è stato attivato.
Non è 'vero' inutile nel primo esempio? –
$ scope.updateCart non si innescherà mai se lo si passa con parentesi come se si passasse il risultato della funzione a $ watch che non sarebbe definito in questo caso. Il modo corretto è: $ scope. $ Watch ('cart', $ scope.updateCart, true); – SKuijers
'cart' è una matrice di oggetti, non ha proprietà come' amount' – Hovo