【问题标题】:ng-repeat for an array inside an arrayng-repeat 用于数组内的数组
【发布时间】:2016-09-30 12:22:56
【问题描述】:

我想根据(单个)复选框过滤表格。问题是我不知道如何将复选框值与数据库内数组中的一个值进行比较。这个我试过了,还是不行:

<input type="checkbox" ng-model="myMaster" ng-true-value="{{vm.user.master}}" ng-false-value='' /> {{vm.user.master}}</label>

<tr ng-repeat="course in vm.courses |filter:search| limitTo: 50">
      <span ng-repeat="master in course.master | filter:myMaster">
                <td >{{course.courseName}}</td>....

vm.courses.master 确实有一个具有不同主值的数组,其中一个是vm.user.master。有人知道怎么解决吗?

编辑:这是 vm.courses: 这是 vm.user:

EDIT2:这是我的控制器的结构:[Controller]3

【问题讨论】:

  • 你能打印出 vm.courses 和 vm.user 里面的内容吗?
  • 绝对!编辑了问题@Juanín
  • 我不太确定你取得了什么成就。就我所见,您正在尝试打印一门或多门具有用户大师的课程,并且它可以在任一大师属性中(物流、质量、生产等)。我说的对吗?
  • 我认为您理解正确。如果选中该复选框,我只想打印与用户具有相同硕士的课程。一个用户只能拥有一个大师,但一门课程可以拥有多个(或没有)。@Juanín
  • 我认为问题可能在于您将跨度放在 tr 中。您可以尝试只使用 div 吗?

标签: html arrays angularjs mongodb filter


【解决方案1】:

试试这个:

<span ng-repeat="(key,value) in course.master" ng-show="value==myMaster">

【讨论】:

  • 这将过滤器限制为仅物流,我希望它能够整体工作。我有更多用户,他们可能有不同的主人
  • 如果你的 field course.master 包含一个包含 master 的字典,你应该创建自己的过滤器并检查 myMaster 是否包含在这个字典中
【解决方案2】:

您是否尝试过将循环移出到 tbody 标记并将内部循环移到 tr?像这样:

...
<tbody ng-repeat="course in vm.courses |filter:search| limitTo: 50">
  <tr ng-repeat="master in course.master | filter:myMaster">
    <td>{{course.courseName}}</td>
...

A table can have zero or more tbody tags

如果您想过滤对象中的特定变量,您还可以创建自己的 custom comparer 来执行此操作。

【讨论】:

  • 现在试过了,这让孔表消失了
  • 你有一个 jsFiddle 我可以在里面做这个吗?
  • 我没做过,但我可以尝试做一个!
  • 我不知道我应该把希望值放在控制器中,因为我的控制器看起来有点不同。我已经打印了屏幕它的外观,也许你更清楚
  • 而不是 printscreen,将两个对象复制粘贴为 json。在对象上运行 JSON.stringify([object])
猜你喜欢
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 2014-07-11
相关资源
最近更新 更多