我有一个ng-repeat列表,在这里我可以在每个字段上手动输入值,也可以在求和输入中输入,并且在每个输入中ng-repeat更改值都由这个和。
问题是,在ng-repeat init
上,我对新输入字段中的所有数字求和,并且当我直接更改ng-repeat
的值时,过滤器成功对所有ng-repeat
的值求和。
如果我在“求和”框中输入另一个值,则根据求和数获得所有ng-repeat
个新值。
但是,如果我尝试这样做,则在此之后直接更改ng-repeat
列表中的值,不会触发求和过滤器。
这是html
<div ng-repeat="item in items track by $index" ng-init="storeValueOnScope($index, item)">
<input type="number" ng-model="item.campaign_impressions" name="item" ng-value="item" ng-blur="sendCustomSelectedImpressionsPerBench($index, item.campaign_impressions);">
</div>
<div>
<label for="sumImpressions">Sum: </label>
<input type="number" class="inputPolje" ng-model="campaignViewsTotalGoal" ng-change="getUserSelectedImpresion(campaignViewsTotalGoal)"
ng-name="sumImpressions"
ng-value="items | sumOfValue:'campaign_impressions'">
</div>
这里是过滤器
myApp.filter('sumOfValue', function() {
return function(data, key) {
if (angular.isUndefined(data) || angular.isUndefined(key))
return 0;
var sum = 0;
angular.forEach(data, function(v, k) {
sum = sum + parseInt(v[key]);
});
return sum;
}
});