ngRepeat filter by array-property

ngRepeat filter by array-property

本文关键字:array-property by filter ngRepeat      更新时间:2023-09-26

如果我有一个对象的属性是数组,我如何通过该属性的第一个元素进行筛选?

数据

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

ng重复

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

从这个SO答案中稍作修改,以使用数组:

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

更新:这似乎在1.2.1版本之后就不起作用了。你可以看到这个使用v1.2.1的fiddle和这个使用v1.4.8的fiddler的区别。不确定这两者之间发生了什么变化,也不确定该功能是否得到了官方支持。作为替代方案,您可以使用函数谓词,如下所示:

<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)简单多少,而且可重用性肯定更低。

试试这个

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