如何计算帖子中所有评论的总和?

时间:2014-11-03 14:43:16

标签: angularjs sum angularjs-ng-repeat

我已经阅读了关于SO的各种例子,即:

link1

link2

link3

在我的情况下,它更简单,我只需要总和而不是平均或sumproduct。

我的代码为ng-repeat = comment in comments,而html为{{comment.sumComment()}}

然后我尝试了3种变化,我总是做错了,因为没有工作。 有人可以帮我吗?

方法1

$scope.sumComment = function(){
    var sum = 0;
    for(var i = 0, i < $scope.comments.length; i++){
        var comment = $scope.comments[i];
        sum += comment;
    }
    return sum;
};

方法2

*$scope.$watch('comment', function () {
    $scope.total = 0
    angular.forEach($scope.comment, function(comment){
        $scope.total += comment
            })
        },  true)

方法3 - 用新的filter.js文件替换带有postId的键和带注释的数据。

.filter('sumComment', function () {
    return function (data, key) {
        if (typeof (data) === 'undefined' && typeof (key) === 'undefined') {
            return 0;
        }
        var sum = 0;
        for (var i = 0; i < data.length; i++) {
            sum = sum + data[i][key];
        }
        return sum;
    }
})

1 个答案:

答案 0 :(得分:2)

方法1

您的html代码段错误。您调用对象sumComment()的{​​{1}}而不是所需的comment方法。尝试:

$scope
{{sumComment()}}

方法2 在这里,您要将对象添加到数字中。请尝试以下

$scope.sumComment = function(){
    return comments.length();
};
{{total}}

方法3

以下是方法3的工作代码段:

$scope.$watch('comments', function () {
    $scope.total = $scope.comments.length;
    });
angular.module('MyModule', [])
.filter('sumComments', function () {
    return function (comments) {
        if (typeof (comments) === 'undefined') {
            return 0;
        }
        
        return comments.length;
    }
})
.controller('MyCtrl', function($scope) {
  $scope.comments = [1,2,3];
});

方法4

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="MyModule">
    <div ng-controller="MyCtrl">
      Total: {{comments| sumComments}}
    </div>
</body>
angular.module('MyModule', [])
.controller('MyCtrl', function ($scope) {
    $scope.comments = [1,2,3,4];
  })