【问题标题】:Calculate Sum in ng-repeat when Value Change值变化时计算 ng-repeat 中的总和
【发布时间】:2020-02-23 13:43:22
【问题描述】:

当值改变时我想计算总和

<tr ng-repeat="act in ctrl.otsact.tests" ng-if="ctrl.editToggle">
    <td>
        <md-input-container>
            <input type="text" ng-model="act.test_date" class="dateField" aria-label="Test Date">
        </md-input-container>
    </td>
    <td ng-repeat="sub in act.subjects" >
        <md-input-container>
            <input type="number" ng-model="sub.score" aria-label="Score">
        </md-input-container>
    </td>
    <td class="composite">
        100
    </td>
    <td><span ng-click="ctrl.removeOTSACT(act.id)"> x </span></td>
</tr>

查看

Date of Test    English Math    Reading Science Writing Composite
2017-05-29      13      13      13      13      13      65
2017-05-29      2       2       2       2       2       10

想在加载时计算合成

【问题讨论】:

  • 控制器代码@Developer
  • 在你的输入上使用ng-change,并在你的控制器中调用一个函数来更新复合值。
  • 着陆时很好我如何计算值。?

标签: angularjs sum angularjs-ng-repeat


【解决方案1】:

你的看法:

<td class="composite">{{ getSum(act) }}</td>

控制器:

$scope.getSum = function(act){
    var sum = 0;
    for(var i = 0; i < act.subjects.length; ++i){
        var subject = act.subjects[i];
        sum += subject.score;
    }
    return sum;
}

当您使用 ngModel 指令或使用插值时,您的数据是双向绑定的,每次更改模型时都会重新计算函数值。

【讨论】:

  • 默认显示NaN,我该如何解决?
【解决方案2】:

像这样改变你的观点

<tr ng-repeat="act in ctrl.otsact.tests" ng-init="act.subjects.total=0" ng-
if="ctrl.editToggle">
<td>
    <md-input-container>
        <input type="text" ng-model="act.test_date" class="dateField" aria-
label="Test Date">
    </md-input-container>
</td>
<td ng-repeat="sub in act.subjects" >
    <md-input-container>
        <input type="number" ng-model="sub.score" 
ng-init="act.subjects.total=act.subjects.total+sub.score" aria-label="Score">
    </md-input-container>
</td>
<td class="composite">
    {{act.subjects.total}}
</td>
<td><span ng-click="ctrl.removeOTSACT(act.id)"> x </span></td>
</tr>

【讨论】:

    【解决方案3】:

    试试这个:

    <td class="composite">{{act.subjects | map:'score' | sum}}</td>
    

    【讨论】:

    • 我收到一个错误angular.js:107 Error: [$injector:unpr] http://errors.angularjs.org/1.4.4/$injector/unpr?p0=sumFilterProvider%20%3C。我必须进行任何配置更改。?
    • 是的,您是否包含角度过滤器并将其注入模块中?
    • 您能否提供更多详细信息,说明您建议此答案的原因?
    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    相关资源
    最近更新 更多