如何使用Knockout将多个集合绑定到单个ul

时间:2015-01-20 04:48:17

标签: knockout.js

我有一个带有两个可观察数组的视图模型:

  • assignedItems
  • requiredDropPoints

在视图中我想做类似这样的事情

<ul>

    <!-- ko foreach: assignedItems -->
    <li>
       <!-- display item-->
    </li>
    <!-- /ko -->

    <!-- ko foreach: requiredDropPoints-->
    <li>
       <!-- display different item-->
    </li>
    <!-- /ko -->

</ul>

我可以在第一个ko if: expression后执行foreach并且它可以正常工作,但第二个foreach将无效。有没有办法得到我需要的东西?

1 个答案:

答案 0 :(得分:1)

您可以使用ko.computed包装集合并将列表项绑定到生成的计算结果:

composite = ko.computed(function() {
  var result = [];
  result.push.apply(result, assignedItems());
  result.push.apply(result, requiredDropPoints());
  return result;
});

<ul>
    <!-- ko foreach: composite -->
    <li>
       <!-- display item-->
    </li>
    <!-- /ko -->
</ul>

在此合成中,您还可以过滤项目,映射项目或进行其他处理。