2016-04-29 4 views
4

私は、計算の問題に直面している過程で、角度を使用してカートで作業しています。私のシナリオでは角膜矯正について

私は私が欲しいもの

<label>No. of item</label> 
<div>{{totalItems}}</div> 


<div ng-repeat="cartElement in currentCartDetails.cartElements"> 
     <span>{{cartElement.productName}}</span> 
     <span>{{cartElement.productCode}}</span> 
     <span>{{cartElement.productPrice}}</span> 
     <span>{{cartElement.quantity}}</span> 
    </div> 

ようなコードの何かを持って、私は値に などを表示するので、多くのオプションがあります知っている

totalItems += cartElement.quantity 

のようなすべてのものを追加します。サーバー側からの計算を使用して、計算の反復をコントローラに使用する

しかし、私が見ているのは、ビューページの反復オブジェクトであるときにそこで計算し、トウワイバインディングの利点を得る方法があります。

答えて

2

機能を使用しようとしましたか? コントローラー内に関数calculateTotalのような関数を定義し、繰り返しごとに呼び出します。あなたはまたによってこれを達成することができます

<div ng-repeat="cartElement in currentCartDetails.cartElements" ng-init="calculateTotal(cartElement)"> 
    <span>{{cartElement.productName}}</span> 
    <span>{{cartElement.productCode}}</span> 
    <span>{{cartElement.productPrice}}</span> 
    <span>{{cartElement.quantity}}</span> 
</div> 
+0

ありがとう、コントローラーの1ステップを減らすために、私はこのプロセスを忘れてしまった。 – Sach

0

テンプレートで、その後

$scope.totalItems = 0; 
... 
$scope.calculateTotal = function(cart){ 
    $scope.totalItems += cart.quantity; 
} 
... 

方法1:

HTML:

<div>{{gettotalItems(currentCartDetails.cartElements)}}</div> 

JS:

$scope.gettotalItems = function(cart_data){ 
    var num = 0; 
    for(var i=0;i<cart_data.length;i++) { 
     num += cart_data[0].quantity; 
    } 
    return num; 
} 

方法2:

HTML:

<div ng-init="gettotalItems(currentCartDetails.cartElements)>{{totalItems}}</div> 

JS:

$scope.gettotalItems = function(cart_data){ 
     var num = 0; 
     for(var i=0;i<cart_data.length;i++) { 
      num += cart_data[0].quantity; 
     } 
     $scope.totalItems = num; 
    } 

利点はあなたがオブジェクトの全体のリストを渡すことで、1回のコールで直接総カート値を得ることができますです。代わりに、反復中に毎回カウントします。

関連する問題