Suw*_*wer 14 nested-loops knockout.js
如何在嵌套循环中访问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>
Run Code Online (Sandbox Code Playgroud)
我试着像这样绑定:
css : {selected : $root.isSelected($parentContext.$parentContext.$index(), $parentContext.$index(), $index())}
Run Code Online (Sandbox Code Playgroud)
我遇到了:
TypeError:
$parentContext.$parentContext.$index不是函数
nem*_*esv 18
如果你想显示祖父的索引,你需要的$parentContext是$parentContext,所以你需要写:
Row index: <span data-bind="text: $parentContext.$parentContext.$index()"></span>
Run Code Online (Sandbox Code Playgroud)
它在您的css绑定中不起作用,因为您对相同的元素具有绑定,foreach因此绑定上下文未正确设置.
您可以通过移动foearch和css使用包含无包含绑定系统的不同元素来解决此问题:
<div class="loop" data-bind="foreach: rows">
<div class="nested-loop" data-bind="foreach: cells">
<!-- ko foreach: candidates -->
<div class="nested-nested-loop"
data-bind="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>
<!-- /ko -->
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
演示JSFiddle.
| 归档时间: |
|
| 查看次数: |
7083 次 |
| 最近记录: |