如果我们有3个嵌套的foreach,如何在最里面的foreach中获得第二个foreach的$ index? $ index为我们提供了最里面的foreach计数器,$ parentContext给了我们最外层的foreach计数器。中间的foreach怎么样?
答案 0 :(得分:1)
您可以根据需要多次向上移动$parentContext
。所以:$index()
> $parentContext.$index()
> $parentContext.$parentContext.$index()
...
以下示例显示
更好的解决方案是在实际项目中包含(计算的)索引属性。
ko.applyBindings({
items: [{
items: [{
items: [1, 2, 3]
},
{
items: [4, 5, 6]
}
]
},
{
items: [{
items: [7, 8, 9],
}, {
items: [0, 1]
}]
}
]
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<ul data-bind="foreach: items">
<li>
<strong data-bind="text: $index()"></strong>
<ul data-bind="foreach: items">
<li>
<strong data-bind="text: [
$parentContext.$index(),
$index()].join('.')"></strong>
<ul data-bind="foreach: items">
<li>
<strong data-bind="text: [
$parentContext.$parentContext.$index(),
$parentContext.$index(),
$index()].join('.')"></strong>
</li>
</ul>
</li>
</ul>
</li>
</ul>
答案 1 :(得分:0)
在这里你可以找到与jsfiddle demo类似的问题: Getting $index of grand parent in a nested loop