0

私のスコープには、オブジェクトのオブジェクトであるモデルがあります。これを見たことがありますが、フィルターが定義されているため、テンプレートからこれを実行したいと考えています。

var App = angular.module('app', []);

App.controller('myCtrl', function($scope) {
$scope.items = {
    { name: 'Cricket bat', cost: '2500', quantity: 0},
    { name: 'Football', cost: '1100', quantity: 0}
};
$scope.cartItems = {};  // This holds the items. I want quantity of each item separately so it's not an array.

getPriceユーザーのカート内のアイテムの価格を計算するフィルターを定義しました。

そして、私はテンプレートに持っています:

{{ cartItems | getPrice }}

ネストされたオブジェクトの値 (つまり、カートのアイテムの 1 つの数量) が変更された後に、テンプレートを更新することは可能ですか? はいの場合、どのように?

4

2 に答える 2

0

数量フィールドを cartItem オブジェクトに移動します

$scope.items = {
    { name: 'Cricket bat', cost: '2500'},
    { name: 'Football', cost: '1100'}
};

$scope.cartItems = {
    { name: 'Cricket bat', quantity: 3},
    { name: 'Football', quantity: 6}
};

次に、上記の json に基づいて getprice フィルターを更新します。これにより、アイテムの価格が変更されたときにカート内のコストが更新されます。

于 2015-04-26T12:57:19.813 に答える
0

あなたの戦略は全体的に良くないようです。

  1. あなたが意味する「オブジェクトのオブジェクト{ {id:1}, {id:2} }」は、有効なJavaScriptではなく、エラーを生成します。オブジェクトの配列[ {id:1}, {id:2} ]または真のオブジェクトを選択してください{ 1: {id:1}, 2: {id:2} }

  2. @Blackhole は正しいです。何も監視する必要はありません。補間は angular.js コアの一部であり、トリッキーな監視をすべて実行します。変数を定義し、それをテンプレートcartItemsで (かっこで囲んで{}) 補間すると、それをフィルタリングするかどうかに関係なく、補間された値が変数値と同期されたままになります。双方向にバインドされています (モデルを変更すると、変数も変更されます)。フィルターを一時的に削除することで、同期を確認でき{cartItems}ます。テンプレートを入れてカートを更新してみてください。テンプレートが更新されていることがわかります。

  3. このモデル形式はおそらくより適切です

    $scope.items = [
        { name: 'Cricket bat', cost: '2500' },
        { name: 'Football', cost: '1100' }
    ];
    
    $scope.cartItems = [
        { item: { name: 'Cricket bat', cost: '2500' }, quantity: 3 },
    ];
    
于 2015-04-26T17:57:40.940 に答える