角度计数发生

时间:2014-01-06 17:51:46

标签: json angularjs angularjs-scope angularjs-ng-repeat

我第一次使用Angular,我想我可能误解了使用这个框架计算节点和节点值的出现是多么容易。

我希望能够算出玩家裤子尺寸为42的次数。

这是否可以通过angular轻松实现,换句话说,在框架中有一些快速调用计算节点值的出现次数,还是需要带有集合和键/值对的自定义函数?

function MyCtrl($scope) {
$scope.players = [
    {shirt: 'XXL', pants: '42', shoes: '12'},
    {shirt: 'XL', pants: '38', shoes: '10'},
    {shirt: 'M', pants: '32', shoes: '9'},
    {shirt: 'XXL', pants: '42', shoes: '12'},
    {shirt: 'XXL', pants: '42', shoes: '12'},
    {shirt: 'XXL', pants: '42', shoes: '12'}
];

}

在这个小提琴中,我利用另一个SO讨论的帮助来聚合不同的节点值。现在我想帮助了解事件计数的最佳实践。

非常感谢任何帮助!

http://jsfiddle.net/7kasV/1/

1 个答案:

答案 0 :(得分:3)

我建议您使用角度过滤器来根据您需要的规格限制阵列。您可以使用名称“filterFilter”将角度过滤器注入控制器,然后在该控制器内的任何位置使用它。例如,如果您想确定裤子大小为42的玩家数量,您可以执行以下操作:

var pantSizeOccurences = filterFilter($scope.players, { pants: '42' });
alert(pantSizeOccurences.length);

我更新了你的jsfiddle链接。您需要将filterFilter注入控制器。这是一个帮助你的片段。

var myApp = angular.module('myApp',[]);

function MyCtrl($scope, filterFilter) {
    $scope.players = [
        {shirt: 'XXL', pants: '42', shoes: '12'},
        {shirt: 'XL', pants: '38', shoes: '10'},
        {shirt: 'M', pants: '32', shoes: '9'},
        {shirt: 'XXL', pants: '42', shoes: '12'},
        {shirt: 'XXL', pants: '42', shoes: '12'},
        {shirt: 'XXL', pants: '42', shoes: '12'}
    ]; 
        var sizeFourtyTwoPants = filterFilter($scope.players, {pants: '42'});
        alert(sizeFourtyTwoPants.length);
    }
    MyCtrl.$inject = ['$scope','filterFilter'];