在嵌套循环中获取Grand parent的$ index

时间:2013-12-10 14:50:49

标签: knockout.js nested-loops

如何在嵌套循环中访问grand parent的索引?

例如:

<div class="loop" data-bind="foreach: rows">
    <div class="nested-loop" data-bind="foreach: cells">
        <div class ="nested-nested-loop" data-bind="foreach: candidates, css : {selected : $root.isSelected($parentContext.$parentContext.$index(), $parentContext.$index(), $index())}">
            Candidate index: <span data-bind="text: $index()"></span>
            Cell index: <span data-bind="text: $parentContext.$index()"></span>
            Row index: <span data-bind="text: $parentContext.$parentContext.$index()"></span>
        </div>
    </div>
</div>

我试图像这样绑定:

css : {selected : $root.isSelected($parentContext.$parentContext.$index(), $parentContext.$index(), $index())}

我遇到了:

  

TypeError:$parentContext.$parentContext.$index不是函数

1 个答案:

答案 0 :(得分:18)

如果要显示祖母的索引,则需要$parentContext的{​​{1}},因此您需要写:

$parentContext

http://jsfiddle.net/fjYsG/

它在Row index: <span data-bind="text: $parentContext.$parentContext.$index()"></span> 绑定中不起作用,因为您在与css相同的元素上绑定,因此绑定上下文未正确设置。

您可以通过在不同元素上移动foreachfoearch来解决此问题,例如使用无包含绑定系统:

css

演示JSFiddle