2016-02-19 64 views
1

我想总结使用JSON数组动态添加的产品数量。如何在AngularJS ng-repeat中求和Json数组值

   <tr ng-repeat="(key,val) in form.products"> 
        <td>{{ProductName(key)}}</td> 
        <td > 
         <input type="text" name="products" ng-model="form.products[key]" class="form-control"> 
        </td> 
       </tr> 

我怎样才能得到上述例子中的产品总和?

+0

得到计数控制器,并使其在$范围可用于模板在NG-repeate – gimbel0893

+0

使用这个我试过$ scope.calculateSum =函数(){ VAR 总和= 0; 为(VAR I = 0; I <$ scope.products.length;我++){ \t \t \t \t \t总和+ = parseFloat($ scope.products [I]); \t \t } return sum; }但无法正常工作,我在模板中调用了。我是新角JS的 – Robin

回答

0

使用lodash

假设你要总结的值是在一个名为“price”属性:

{{_(form.products).mapValues('price').sum()}} 

您可能需要获得lodash到你的范围第一次。在控制器中,是这样的:

scope._ = _; 

this approach

+0

没有使用lodash是不可能的?我没有任何属性值,我的数组看起来像{“1”:20,“2”:15,“3”:5},产品代码和产品价格 – Robin

0

你正在使用的不是“对象数组”的“同性质对象”,这就是为什么你不能使用你的榜样以上,$ scope.products.length; ...

$scope.products ={ 
"1":"20",//property 1 with value 20 
"2":"35",//property 2 with value 35 
"3":"150"//property 3 with value 150 
} 

数据对象(因为你拥有它的属性对象)

你与它的性能产品对象

$scope.myData = {"1":120,"2":250,"3":500}; 

功能是迭代到对象的属性和总价

//read object properties and sum price 
    $scope.calculateSum = function(data){ 
    var sum=0; 
    var counter=0; 
    for (var property in data) { 
     if (data.hasOwnProperty(property)) { 
      sum += data[property]; 
      counter++; 
     } 
    } 
    return sum; 
    }; 

功能是迭代到对象的属性和计算产品

//read object properties and count the products 
    $scope.countProducts = function(data){ 
    var counter=0; 
    for (var property in data) { 
     if (data.hasOwnProperty(property)) { 
      counter++; 
     } 
    } 
    return counter; 
    }; 

到HTML模板:

<table> 
    <tr ng-repeat="(key,value) in myData track by $index"> 
    <td> 
     <input type="text" name="id" ng-model="key" class="form-control"> 
    </td> 
    <td>  
     <input type="text" name="price" ng-model="value" class="form-control">    
    </td> 
    </tr> 
    <tr> 
    <td>Products: {{countProducts(myData)}}</td> 
    <td>Sum: {{calculateSum(myData)}}</td> 
    </tr> 
    </table> 

我已经做了计算产品,也和一个活生生的例子产品价格:http://plnkr.co/edit/FmJhvV?p=preview

希望帮助,去运气不错。

相关问题