2014-10-17 85 views
0

我想计算角度大括号语法中动态数量的变量的总和。AngularJS计算大括号中的变量的动态数量

for循环我通常会使用类似于:

var total = 0; 
for(x=0; x< objects.length; x++) { 
    total += objects[x].num; 
} 

我想重新创建为{{ total }}{{total()}}和当过其中一个变量发生变化具有全部更新。

回答

0

这里是你正在寻找:JSFiddle

HTML

<div ng-app="myApp" ng-controller="ctrl" ng-strict-di> 
    {{total()}}<br/> 
    <input type="text" ng-model="item.num" ng-repeat="item in objects"/> 
</div> 

JS:

angular.module('myApp',[]).controller('ctrl',function($scope) { 

    angular.extend($scope,{ 
     objects:[ 
      {num:7}, 
      {num:8}, 
      {num:9} 

      ], 
     total : function(){ 
      var res = 0; 
      for (var i=0;i<$scope.objects.length;i++) 
       res+=parseInt($scope.objects[i].num); 
      return res; 
     } 
    }); 
}); 

UPDATE 为了测试它的更新总对象与代码NUM更新打法是这样的:

setInterval(function() { 
    $scope.objects[1].num++; 
    $scope.$apply(); 
},500); //increase num of 2nd object by 1, every half of second 

为了测试它是否仍然是更新添加新对象时,玩这样的代码:

setInterval(function() { 
    $scope.objects.push({num:Math.floor(Math.random()*100)}); 
},5000); //Add new object, with random num: value, every 5 seconds 
+0

不错!这里需要'.extend'吗? – 2014-10-17 12:30:00

+0

不,这只是执行$ scope.objects = ...和$ scope.total = ...的好方法,我通常使用 – jevgenig 2014-10-17 12:30:45

+0

当其中一个变量发生更改时,此自动更新是否会自动更新?或者我将不得不重新开始计算。 – 2014-10-17 12:37:34