我正在尝试获取 ngRepeat 循环中所有对象的“amount”键的总和。我还需要根据另一个键来过滤该金额,该键代表花费该金额的人“姓名”。
例如,我想获取玛丽和刘易斯花费的总金额的单独值。我对 Angular 比较陌生,不确定完成此任务的正确方法。任何帮助将不胜感激。
HTML
<!-- Mary's Items -->
<div class="col-md-4">
<h1>Mary</h1>
<div class="well" ng-repeat="post in posts | filter: {name: 'Mary' } | orderBy: 'created_at':true">
<!-- exit a message -->
<h4>{{post.title}}</h4>
<h3>${{post.amount}}</h3>
<p>{{post.details}}</p>
<!-- delete message -->
<p><a href="javascript:void(0);" class="pull-right glyphicon glyphicon-trash" ng-click="messages.$remove(post)"></a></p>
</div>
</div>
<!-- Lewis' Items -->
<div class="col-md-4 col-md-offset-1">
<h1>Lewis</h1>
<div class="well" ng-repeat="post in posts | filter: {name: 'Lewis' } | orderBy: 'created_at':true">
<!-- exit a message -->
<h4>{{post.title}}</h4>
<h3>${{post.amount}}</h3>
<p>{{post.details}}</p>
<p>{{post.created_at}}</p>
<!-- delete message -->
<p>
<a href="#/edit/{{posts.indexOf(post)}}">edit</a>
<a href="javascript:void(0);" class="pull-right glyphicon glyphicon-trash" ng-click="removePost(post)" ng-confirm-click="Are you sure you want to remove this item?"></a>
</p>
</div>
JavaScript
spendingApp.controller("SpendingController", function($scope, $firebase,$stateParams) {
//Setup Firebase DB and make available to app
var ref = new Firebase("**Firebase URL**");
var sync = $firebase(ref);
$scope.posts = sync.$asArray();
$scope.whichItem = $stateParams.itemId;
console.log($stateParams);
$scope.itemTitle = $scope.whichItem;
// Add new Item to DB
$scope.addPost = function() {
$scope.posts.$add({
name: $scope.itemName,
title: $scope.itemTitle,
details: $scope.itemDetails,
amount: parseFloat($scope.itemAmount),
created_at: Date()
});
// Clears values;
$scope.itemName = "";
$scope.itemAmount = "";
$scope.itemTitle = "";
$scope.itemDetails = "";
}
});
JSON 示例
{
"amount" : 16.04,
"created_at" : "2014-08-17T17:40:18.846Z",
"details" : "upgrade",
"id" : 36,
"name" : "Lewis",
"title" : "Street Fighter Ultra",
"updated_at" : "2014-08-17T17:40:18.846Z"
}, {
"amount" : 19,
"created_at" : "2014-08-17T17:41:08.341Z",
"details" : "",
"id" : 37,
"name" : "Lewis",
"title" : "Webfaction Web Hosting",
"updated_at" : "2014-08-17T17:41:08.341Z"
}
最佳答案
尝试使用angular-filter的sumFilter
模块。
例如:
JS:
$scope.users = [
{ id: 1, name: 'Ariel', amount: 16.54 },
{ id: 2, name: 'Dan', amount: 13.74 },
{ id: 3, name: 'Ron', amount: 43.90 },
{ id: 4, name: 'Greg', amount: 71.09 },
{ id: 5, name: 'Alex', amount: 84.99 },
];
HTML:
<p>{{ users | map: 'amount' | sum }}</p>
<!--Result: 230.26 -->
关于javascript - 获取 ngRepeat 中对象键值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25554865/