【问题标题】:Angular Count Occurrences角计数出现
【发布时间】:2014-01-06 17:51:46
【问题描述】:

我是第一次使用 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/

【问题讨论】:

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


【解决方案1】:

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

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

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

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'];

【讨论】:

  • 查看以下链接了解更多信息:docs.angularjs.org/guide/filter
  • 我已经更新了小提琴以尝试在实践中使用过滤器,但我不断收到错误对象不是函数。任何想法这个错误意味着什么。我感觉错误可能与“过滤器”功能或集合有关,但我不确定。如果您有机会,请看一下小提琴并帮助我确定我可能缺少的东西。非常感谢您的任何帮助/建议。 jsfiddle.net/7kasV/5
  • 在遍历 html 页面中的裤子集合时,是否有动态过滤裤子尺寸的方法。我正在尝试创建一个可以从网页调用的自定义过滤器,这意味着它必须在范围之外。这个范围是我最困难的,将它动态传递给自定义过滤器。您的帮助非常有用,感谢您花时间帮助回答我的问题。
  • 安东尼奥。好的,我明白你的意思了,你想让这个自定义过滤器做什么,或者它应该接受什么参数?看起来您的过滤器当前返回列表中所有唯一项目的裤子尺寸
  • 我更新了你的 jsfiddle。它现在没有内部中继器。你非常亲近。不错的工作。这就是你要找的吗?
猜你喜欢
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 2013-02-07
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多