1

我有这样的用户

[{id:1,name:'name',parent_id:0,type:1},
{id:2,name:'name2',parent_id:0,type:2},
{id:3,name:"name1 child",parent_id:1,type:1}]

我正在尝试根据 parent_id 和类型 id 显示父母和孩子用户,例如 id 3 是 id 1 的孩子,我试图像这样显示它们

http://jsfiddle.net/U3pVM/689/

感谢帮助

4

2 回答 2

1

我修好了你的小提琴:

http://jsfiddle.net/eQP8S/

 <div ng-controller="MyCtrl">
    <ol>
    <li ng-repeat="user in users | filter:{parent_id:0}">
         {{user.name}}
        <ol>
               <li ng-repeat="child in users | filter:{parent_id:user.id, type:user.type}">
                   {{child.name}}
               </li>
        </ol>
    </li>
   </ol>
</div>

您的主要问题是您试图将“过滤器”过滤器与函数一起使用,这没关系,但该函数不允许使用任何参数。如果您确实需要创建一个带有参数的过滤器,您必须编写一个自定义过滤器: http: //docs.angularjs.org/guide/dev_guide.templates.filters.creating_filters

但是在您的情况下,您可以使用标准的“过滤器”过滤器并将其传递给您想要的对象。

另外,诅咒你的 Angular 开发人员创建了一个称为过滤器的抽象,然后创建了一个“过滤器”过滤器。我的意思是,这有多令人困惑?

于 2013-06-04T21:15:02.643 回答
0

这不是使用过滤器的正确方法。如果您查看文档,您有三个选择:

  1. 使用字符串。它将在对象中进行深入搜索。任何具有包含该字符串的深度值的对象都将匹配
  2. 使用一个功能。它将为数组的元素调用。您应该提供函数范围内的任何参数,而不是作为过滤器的参数。
  3. 使用一个对象。它将像字符串匹配一样工作,但针对特定属性。

如果你使用第三种情况

<li ng-repeat="child in users | filter:{parent_id: user.id, type: user.type}">

并且打印孩子的名字

{{ child.name }}

然后你会看到正确的结果。

http://jsfiddle.net/waAc7/

于 2013-06-04T21:16:10.177 回答