我是第一次尝试AngularJS。我确实重复了基于JSON数据的模板,这是一个示例:
$scope.users = [
{name: 'first user', status: {name: 'employee'}},
{name: 'second user', status: {name: 'freelancer'}},
{name: 'third user', status: {name: 'employee'}},
];
这工作正常:
<p ng-repeat="user in users">{{user.name}}</p>
现在,我想预过滤显示的用户。也可以正常工作:
<p ng-repeat="user in users | filter:{status: 'employee'}">{{user.name}}</p>
但是,当我想基于嵌套对象(
status.name
而不是status
)中的JSON数据进行过滤时,它不再起作用!<p ng-repeat="user in users | filter:{status.name: 'employee'}">{{user.name}}</p>
我正在使用AngularJS 1.2.18。如果我使用的是较旧的版本,例如AngularJS 1.2.0-rc.3,它将再次起作用。
我在文档中找不到有关该行为的任何信息。
是否有新语法或功能不再实现?
最佳答案
AngularJS 1.2.11中引入的重大更改。不要将其标记为has been decided,因为它既不是经过测试的,也不是书面行为。
从此版本开始,myObject | filter:{'key.subkey':'search'}
将在search
中搜索字符串myObject['key.subkey']
,而在myObject['key']['subkey']
中将不再搜索。
在AngularJS 1.2.13中引入了一种新语法,在我看来更自然,它可以在嵌套对象myObject | filter:{key : {subkey : 'search'}}
中进行搜索。这就是您要寻找的解决方案。
<p ng-repeat="user in users | filter:{status : {name: 'employee'}}">{{user.name}}</p>