我是第一次尝试使用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,它又可以使用。
我在文档中找不到有关该行为的任何信息。 是否有新的语法,或者该功能是否已不再实现?
答案 0 :(得分: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>