Javascript AngularJS行和ng重复
我使用ng repeat在表中动态添加来自数组的行 现在我想得到每行所有总和(group.sum*group.perc/100.0)。我需要它在一个变量中,因为我需要这个值进行进一步的计算。多谢各位 HTMLJavascript AngularJS行和ng重复,javascript,angularjs,Javascript,Angularjs,我使用ng repeat在表中动态添加来自数组的行 现在我想得到每行所有总和(group.sum*group.perc/100.0)。我需要它在一个变量中,因为我需要这个值进行进一步的计算。多谢各位 HTML <tr ng-repeat="group in groupsArr"> <td class="total-rows" ng-model="taxes">{{group.sum *
<tr ng-repeat="group in groupsArr">
<td class="total-rows" ng-model="taxes">{{group.sum * group.perc / 100.0 | currency :""}}</td>
</tr>
<tr ng-repeat="group in groupsArr">
<td class="total-rows" ng-model="taxes">{{group.sum * group.perc / 100.0 | currency :""}} </td>
</tr>
<tr>
<b> Tax Totals: </b> {{ groupsArr | sumFilter | currency }}
</tr>
{{group.sum*group.perc/100.0 |货币:'}
脚本
var taxTotals = 0;
var taxTotals =
for (i=0; i<group.length; i++) {
taxTotal = taxTotal + group[i].taxes;
};
console.log(taxTotals);
};
var-taxTotals=0;
var taxTotals=
对于(i=0;i创建一个过滤器:
app.filter('sumFilter', function() {
return function(groups) {
var taxTotals = 0;
for (i=0; i<groups.length; i++) {
taxTotal = taxTotal + groups[i].taxes;
};
return taxTotals;
};
});
在HTML中使用它:
<tr ng-repeat="group in groupsArr">
<td class="total-rows" ng-model="taxes">{{group.sum * group.perc / 100.0 | currency :""}} </td>
</tr>
<tr>
<b> Tax Totals: </b> {{ groupsArr | sumFilter | currency }}
</tr>
{{group.sum*group.perc/100.0 |货币:'}
税收总额:{groupsArr | sumFilter | currency}
回答来自像素位后更新
多亏了像素点。这是我的滤镜,它在视图中工作得非常完美
HTML
<tr ng-repeat="group in groupsArr">
<td class="total-rows" ng-model="taxes">{{group.sum * group.perc / 100.0 | currency :""}}</td>
</tr>
<tr ng-repeat="group in groupsArr">
<td class="total-rows" ng-model="taxes">{{group.sum * group.perc / 100.0 | currency :""}} </td>
</tr>
<tr>
<b> Tax Totals: </b> {{ groupsArr | sumFilter | currency }}
</tr>
一个最佳答案的补充…我在我非常大的表中使用过滤器,所以它是如何使用动态过滤器实现的
过滤器
app.filter('sumStatusFilter', function(){
return function (items, filtersStatus, filterLocations){
var filtered = [];
var filtered1 = [];
var total = 0;
if (typeof filtersStatus != 'undefined') {
angular.forEach(items, function(item) {
for(i = 0; i < filtersStatus.length; i ++){
if(filtersStatus[i] == item.status_message)
filtered.push(item);
}
});
}
if (typeof filterLocations != 'undefined') {
angular.forEach(filtered, function(item) {
for(i = 0; i < filterLocations.length; i ++){
if(filterLocations[i] == item.office_location)
filtered1.push(item);
}
});
filtered = [];
filtered = filtered1;
}
if (filtered.length == 0) {
filtered = this.jobs
}
angular.forEach(filtered, function(value, key){
total += value.restoration_reserve
});
return total;
}
app.filter('sumStatusFilter',function(){
返回功能(项目、过滤器状态、过滤器位置){
var筛选=[];
变量filtered1=[];
var合计=0;
if(过滤器状态的类型!=“未定义”){
角度。forEach(项目、功能(项目){
对于(i=0;i
}))
在HTML中
<tr><td>Total: {{ report_controller.items | sumStatusFilter:report_controller.status_message_selections:report_controller.office_selections | currency }}</td></tr>
Total:{{report_controller.items | sumStatusFilter:report_controller.status_message_selections:report_controller.office|selections | currency}
或使用Map Reduce
控制器
angular.module('App.filters', []).filter('sumFilter', [function () {
// filter for tax sum
return function(groups, lenght) {
var taxTotal = 0;
for (i=0; i < groups.length; i++) {
taxTotal = taxTotal + ((groups[i].perc * groups[i].sum) / 100);
};
return taxTotal;
};
}]);
$scope.mappers = {
tax: function(m){
return group.sum * group.perc / 100.0;
}
}
$scope.sum = function(m){
if($scope.groupsArr.length == 0) return;
return $scope.groupsArr.map(m).reduce(function(p, c){
return p + c;
}) || 0;
};
HTML
<tr ng-repeat="group in groupsArr">
<td class="total-rows" ng-model="taxes">{{group.sum * group.perc / 100.0 | currency :""}} </td>
</tr>
<tr>
<b> Tax Totals: </b> {{ sum(mappers.tax) }}
</tr>
{{group.sum*group.perc/100.0 |货币:'}
税收总额:{sum(mappers.Tax)}
感谢您对过滤器的提示。现在我得到一个异常,无法读取过滤器中未定义的属性'length'。'angular.module('App.filters',[]).filter('sumFilter',[function(){return function(groups){var taxTotals=0;for(i=0;i您是如何使用筛选器的?您确定要传入已定义的数组吗?在您的原始代码中,我认为您有$scope.groupArr-如果我没有记错的话。如果$scope.groupArr是填充数组的位置,则将其传递给$filter函数。即$filter($scope.groupArr')($scope.groupArr);