ngRepeat按数组属性过滤

时间:2016-04-18 11:26:43

标签: javascript angularjs angularjs-filter

如果我有一个属性为数组的对象,我该如何按该属性的第一个元素进行过滤?

数据

{
    Id: "0",
    Name: ["John", "Doe"]
}

ngRepeat

<li ng-repeat="u in users | filter:{Name[0]: 'John'}">{{ u.Name[0] + ' ' + u.Name[1] }}</li>

2 个答案:

答案 0 :(得分:1)

this SO answer略微修改以使用数组:

<li ng-repeat="u in users | filter: {Name: ['John']}">{{ u.Name[0] + ' ' + u.Name[1] }}</li>

更新:在版本1.2.1之后,这似乎不起作用。您可以在this fiddle using v1.2.1this one using v1.4.8中看到差异。不确定这两者之间有什么变化,或者该功能是否得到官方支持。作为替代方案,您可以使用函数谓词,如下所示:

<li ng-repeat="u in users | filter: isJohn">{{ u.Name[0] + ' ' + u.Name[1] }}</li>

控制器:

$scope.isJohn = function(value){
    return value.Name[0] === 'John';
};

但话说回来,这并不比创建评论中建议的 nubinub 之类的自定义过滤器简单得多,而且绝对不太可重复使用。

答案 1 :(得分:0)

试试这个

<li ng-repeat="u in users | filter:u.Name[0] == 'John'">{{ u.Name[0] + ' ' + u.Name[1] }}</li>
相关问题