Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS行和ng重复_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS行和ng重复

Javascript 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 *

我使用ng repeat在表中动态添加来自数组的行

现在我想得到每行所有总和(group.sum*group.perc/100.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 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);