首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个perms的AngularJS滤波器

具有多个perms的AngularJS滤波器
EN

Stack Overflow用户
提问于 2013-06-05 04:25:12
回答 2查看 742关注 0票数 1

我有一个这样的用户

代码语言:javascript
复制
[{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来显示父用户和子用户,例如,id3是id1的子用户,我尝试像这样显示它们

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

感谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2013-06-05 05:15:03

我把你的小提琴修好了:

http://jsfiddle.net/eQP8S/

代码语言:javascript
复制
 <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>

您的主要问题是您试图将" filter“过滤器与一个函数一起使用,这是可以的,但该函数不允许接受任何参数。如果您实际上需要创建一个接受参数的过滤器,则必须编写一个自定义过滤器:http://docs.angularjs.org/guide/dev_guide.templates.filters.creating_filters

但在您的示例中,您可以使用标准的" filter“过滤器,并传递给它将执行您想要的操作的对象。

同样,诅咒你的Angular开发人员创建了一个名为filter的抽象,然后创建了一个" filter“过滤器。我是说,这有多让人困惑?

票数 1
EN

Stack Overflow用户

发布于 2013-06-05 05:16:10

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

  1. 使用字符串。它将在对象中进行深入的搜索。任何具有包含字符串的深值的对象都将匹配
  2. ,请使用函数。它将为数组的元素调用。您应该提供函数作用域中的任何参数,而不是作为筛选器的参数。
  3. 使用对象。它的工作原理类似于字符串匹配,但用于特定的属性。

如果使用第三种情况

代码语言:javascript
复制
<li ng-repeat="child in users | filter:{parent_id: user.id, type: user.type}">

此外,还要打印孩子的名字

代码语言:javascript
复制
{{ child.name }}

然后,您将看到正确的结果。

http://jsfiddle.net/waAc7/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16926823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档