私の角型アプリケーションは、複数のコントローラを使用しています。何らかの理由で、変数を後で変更するときに、angle.extend内のスコープ変数を更新していません。ここで私は何をすべきかです:双方向バインディングAngularjsのバグ
angular.extend($scope, {
cart: {
products: [
{amount: 1, name: 'product 1', total: 4.95},
{amount: 4, name: 'product 2', total: 4.95},
{amount: 2, name: 'product 3', total: 4.95},
],
deliveryCost: 0,
total: 0,
orderContinue: false,
}
});
そして私は私がカートに製品を追加したい:私はaddToCart関数の中で私の$ scope.cart.productsをCONSOLE.LOGとき
addToCart: function(id) {
var newProduct = {amount: 1, name: 'product 4', total:5.94};
$scope.cart.products.push(angular.extend(newProduct));
}
、これは、新しく追加された製品を示しているが、私はそれが私の見解で更新したいときに、それだけでリストに製品を追加しません:
<div class="row" ng-controller="cartController">
<div class="col-md-12">
<h4>Cart</h4>
<div class="row" ng-repeat="products in cart.products">
<div class="col-md-2">
{{products.amount}}
</div>
<div class="col-md-8">
{{products.name}}
</div>
<div class="col-md-2">
<a href="#">X</a>
</div>
</div>
</div>
製品がこの
<div ng-controller="cartController" class="col-xs-4 col-sm-2 col-lg-2" style="border: 1px solid black;">
<button ng-click="addToCart(1)">Add to</button>
</div>
私が間違って何をやっているように追加されますか?
ここでは「angular.extend」を使用していますか?あなたがしていることに対して、それは必要ではないようです。あなたは '$ scope.carts - {cart:....}'と '$ scope.cart.products.push({...}) 'と言うことができるはずです。私の感想は、あなたのangle.extendの使用がダイジェストサイクルを起動せず、ビューの更新を引き起こすということです。 – ryanlutgen
これはHTMLで 'cartController'が2回宣言されているからです。コントローラの共有インスタンスはなく、それぞれ独自のインスタンスを作成します。 – tymeJV