使用Angular.js版本1.2.18进行嵌套过滤

时间:2014-06-17 14:44:41

标签: javascript angularjs filter version

我是第一次尝试使用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,它又可以使用。

我在文档中找不到有关该行为的任何信息。 是否有新的语法,或者该功能是否已不再实现?

1 个答案:

答案 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>