如果我有一个对象,其属性是数组,如何按该属性的第一个元素进行过滤?
数据
{
Id: "0",
Name: ["John", "Doe"]
}
ngRepeat
<li ng-repeat="u in users | filter:{Name[0]: 'John'}">{{ u.Name[0] + ' ' + u.Name[1] }}</li>
请您参考如下方法:
从 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.1 中看到差异。和 this one using v1.4.8 。不确定这两者之间发生了什么变化,或者该功能是否得到过官方支持。作为替代方案,您可以使用函数谓词,如下所示:
<li ng-repeat="u in users | filter: isJohn">{{ u.Name[0] + ' ' + u.Name[1] }}</li>
Controller :
$scope.isJohn = function(value){
return value.Name[0] === 'John';
};
但话又说回来,这并不比创建像评论中建议的 nubinub 这样的自定义过滤器简单多少,而且可重用性肯定较差。