如何拆分angularjs中的值?

时间:2015-09-03 06:41:20

标签: javascript angularjs split angularjs-scope

我已经创建了这样的范围函数。

$scope.getTotal = function(){
        var total1 = 0;
        var total2 = 0;
        var total3 = 0;
        for(var i = 0; i < $scope.today.length; i++){
            var ordqt = $scope.today[i]["OrdQ"];
            var ordvval = $scope.today[i]["OrdSV"];
            var resqt = $scope.today[i]["RecQ"];

            total1 = +total1 + +ordqt;
            total2 = +total2 + +ordvval;
            total3 = +total3 + +resqt;

        }
        total = total1+"@"+total2+"@"+total3;
        return total;
    }

如何从getTotal函数中拆分值以显示在这里?

<td>{{ getTotal() }}<td>
<td>{{ getTotal() }}<td>
<td>{{ getTotal() }}<td>

2 个答案:

答案 0 :(得分:4)

你应该纠正以下行

total1 = total1 + ordqt;
total2 = total2 + ordvval;
total3 = total3 + resqt;

您可以使用ng-repeat

来完成
<td ng-repeat="total in getTotal().split('@') track by $index">
    {{ total }}
</td>

答案 1 :(得分:1)

你不应该首先加入他们:

$scope.getTotal = function() {
    // ...
    return {
        total1: total1,
        total2: total2,
        total3: total3
    };
}

<td>{{ getTotal().total1 }}<td>
<td>{{ getTotal().total2 }}<td>
<td>{{ getTotal().total3 }}<td>

甚至更好,制作3个不同的功能,计算3个不同的总数,并从视图中调用每个功能。

或者甚至更好,使用一个函数来计算你想要计算参数总数的字段:

$scope.getTotal = function(field){
    var total = 0;
    for (var i = 0; i < $scope.today.length; i++){
        var value = $scope.today[i][field];
        total = +total + +value;
    }
    return total;
}

并使用

<td>{{ getTotal('OrdQ') }}<td>
<td>{{ getTotal('OrdSV') }}<td>
<td>{{ getTotal('RecQ') }}<td>

请注意,如果您使用有意义的名称,您的代码将更具可读性。 OrdQordqt的含义是什么?为什么有时会使用ordqt,有时会使用OrdQ。为什么不使用有意义的东西,我想,orderQuantity