如何比较Knockout.js foreach中的2个索引?

时间:2012-11-01 00:42:33

标签: javascript knockout.js

简单的问题:在ViewModel中,我有一个我要迭代的值数组,让我们称它们为“作业”。每项工作都是{type: myType, name: myName} 我想在作业类型之间放置一个<hr />来分隔它们。我尝试了以下内容,但我觉得我的语法搞砸了:

<!-- ko foreach: jobs -->
  <div class="job" data-bind="text: name"></div>
  <!-- ko if: ($index() > 0 && $parent[$index()].type != $parent[$index() - 1].type) -->
    <hr />
  <!-- /ko -->
<!-- /ko -->

没有<!-- ko if -->这一切都运作良好,我得到一个很好的清单 使用if,我将打印前两个作业名称,然后是hr(错误,因为我有第一个类型的6个作业),然后出现此错误:

  

未捕获错误:无法解析绑定。
  消息:TypeError:无法读取未定义的属性“type”;
  绑定值:if:($ index()&gt; 0&amp;&amp; $ parent [$ index()]。type!= $ parent [$ index() - 1] .type)

记录中,有18种工作,有3种不同类型 我做错了什么?

1 个答案:

答案 0 :(得分:3)

此上下文中的$parent是包含属性jobs的对象。所以你必须索引到$parent.jobs

<!-- ko if: ($index() > 0 && $data.type != $parent.jobs[$index() - 1].type) -->
    <hr />
<!-- /ko -->