Knockout.js 如果knockoutjs中有3个嵌套的foreach,如何获取第二个foreach的$index

Knockout.js 如果knockoutjs中有3个嵌套的foreach,如何获取第二个foreach的$index,knockout.js,foreach,Knockout.js,Foreach,如果我们有3个嵌套的foreach,如何在最里面的foreach中获得第二个foreach的$index$索引为我们提供最内层foreach的计数器,$parentContext为我们提供最外层foreach的计数器。中间的foreach呢?您可以随意向上移动$parentContext。所以:$index()$parentContext.$index()>$parentContext.$parentContext.$index() 下面的例子表明 它起作用了,而且 这很难看而且容易出错 更好的

如果我们有3个嵌套的foreach,如何在最里面的foreach中获得第二个foreach的$index$索引为我们提供最内层foreach的计数器,$parentContext为我们提供最外层foreach的计数器。中间的foreach呢?

您可以随意向上移动
$parentContext
。所以:
$index()
$parentContext.$index()
>
$parentContext.$parentContext.$index()

下面的例子表明

  • 它起作用了,而且
  • 这很难看而且容易出错
  • 更好的解决方案是在实际项目中包含(计算的)索引属性

    ko.applyBindings({
    项目:[{
    项目:[{
    项目:[1、2、3]
    },
    {
    项目:[4、5、6]
    }
    ]
    },
    {
    项目:[{
    项目:[7、8、9],
    }, {
    项目:[0,1]
    }]
    }
    ]
    })
    
    

    父上下文应该为这一点工作——你能举一个例子,说明它不适合你的地方吗?除了点击<代码>父< /代码>,你应该考虑,在前缀绑定中使用<代码>作为< /代码>,给你的元素一个别名,比如“代码>前缀:{DATAB:人,AS:‘人’}。内部foreach可以按名称引用父元素,这使得在深入嵌套时可以更清晰地阅读所有内容。在大约一半的时间里有一个很好的例子。$parentContext.$parentContext.$index()对我很有用。谢谢。我认为$parentContext提供了最外层的foreach上下文,这是错误的。它只为您提供了每个步骤的上下文。