【问题标题】:Angular 1.3 filter list of objects with array attributeAngular 1.3 过滤具有数组属性的对象列表
【发布时间】:2015-03-25 10:38:43
【问题描述】:

我希望有人可以帮助我。 对于我目前在 Angular 1.3 中的项目,我正在使用这个列表:

$scope.myList = [{
  id: "obj1",
  content: [{
    id: 1,
    name: 'attr 1'
  }, {
    id: 2,
    name: 'attr 2'
  }, {
    id: 3,
    name: 'attr 3'
  }]
}, {
  id: "obj2",
  content: [{
    id: 4,
    name: 'attr 4'
  }, {
    id: 5,
    name: 'attr 5'
  }, {
    id: 6,
    name: 'attr 6'
  }]
}, {
  id: "obj3",
  content: [{
    id: 7,
    name: 'attr 7'
  }, {
    id: 8,
    name: 'attr 8'
  }, {
    id: 9,
    name: 'attr 9'
  }]
}];

我想获取内容数组中 id 为 X 的对象。

我使用了这个 ng-repeat:

<ul>
  <li ng-repeat="item in myList | filter: {content: [{id:1}]}">
    {{item}}
  </li>
</ul>

当我使用 id:1、id:4 或 id:7 时,它可以工作,但不适用于其他 id...

有人有什么想法吗?

编辑

我终于找到了导致问题的原因,我使用的是 angular 1.3.0。升级到 1.3.11 后它工作了!!

【问题讨论】:

    标签: arrays angularjs filter nested


    【解决方案1】:

    您可以像这样基于嵌套属性进行过滤:

    <li ng-repeat="item in myList | filter: {content: {id: '1'}}">
       {{item}}
    </li>
    

    请务必注意,您将获得的“对象”(具有 id X)将位于 item 级别。

    【讨论】:

    • 我已经尝试过您的建议,但它不起作用,因为“内容”包含对象数组。如果对象 'content' 有一个属性 'id' 你是完全正确的......
    • @user2246413,使用您的(为了说明而稍作修改)数据对我来说效果很好:plnkr.co/edit/katQANxYUVmWvu8yeltU?p=preview
    • @user2246413,你尝试过我在 plunker 中显示的方式吗?
    • 我终于找到了导致问题的原因,我使用的是 angular 1.3.0。升级到 1.3.11 后它工作了!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多