我已经阅读了关于SO的各种例子,即:
在我的情况下,它更简单,我只需要总和而不是平均或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;
}
})
答案 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];
})