2016-04-24 17 views
0

現在、totalCostは関数としてroundに渡されますが、整数値でなければなりません。ファクトリから渡された関数から値を返す方法は?

ビュー

{{round(shoppingCart.totalCost)}} 

工場は

myApp.factory(.... 
var calculateTotalCost = function(){ 
    return this.items.map(function(item){ 
     return HelperFunctions.getPrice(item) * item.quantity; 
    }).reduce(function(p, c){ 
     return p + c; 
    }); 
    }; 
var factory = { 
shoppingCart: {order: currentOrder, totalCost: calculateTotalCost} 
} 
return factory; 
} 

どのようにそれを解決するには?

round : function (value) { 
     return typeof value !== 'undefined'? value.toFixed(2): 0; 
     } 

答えて

1

現在あなたはshoppingCartオブジェクトでありcalculateTotalCost機能の参照を保持totalCost変数を持っていました。ビューで同じ変数を示しながらだから、あなたはサービス参照を持っている必要がありますが、精密に固定値を作りたかったとしてあなたは、あなたのケースで精度2numberフィルタ自体を使用することができます$scope.shoppingCart = shoppingCart

を行うことによってビュー上で利用できるようにします2。これは通貨形式で番号を表示するのにも役立ちます。

{{shoppingCart.totalCost() | number:2 }} 
+0

それは私があなたの更新を参照して、うまく –

+0

@RColaが動作していない、それは今、それが動作コントローラ –

+0

に '$ scope.roud = factory.round'を持つ必要があります。パイプフィルターは値をどのように丸めますか?私はそれが 'number> = 5'のように動作すると期待しています。 '数字<5 'は切り捨てられます。 –

0

ファクトリから関数をビュー式で直接呼び出すことは避けてください。あなたのディレクティブのコントローラーで

  1. は工場を注入します。
  2. 関数を呼び出すgetTotalCostcalculateTotalCostを隠す)
  3. 結果を変数に格納します。
  4. コントローラーでラウンド関数を直接適用すると良いアイデアかもしれません。
  5. 最後に、変数をビューにバインドします。
+0

'items'が変更された場合、' calculateTotalCost 'を呼び出すことによってAngularが自動的に' shoppingCart.totalCost'を処理/更新する方法はありますか?私は 'calculateTotalCost'を' productAdd() 'と' productRemove() 'に対して呼び出すことができましたが、私はこれを扱うためにAngularを好んでいました。 –

+0

はい '$ scope。$ watch( 'items.length'、function(){...})' –

関連する問題