我是第一次尝试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>

09-30 16:09
查看更多