在knockout.js中访问$ parent的索引
在knockout.js 2.1.0中,在使用foreach绑定的模板中,可以通过$ index()函数访问当前项目的索引。 在嵌套的foreach绑定中,有没有办法从模板访问$ parent的索引?
说我有这样的数据结构:
var application = { topModel: [ { {subModel: [{'foo':'foo'}, { 'bar':'bar'}]}, // this has top:0 and sub:0 {subModel: [{'foo2':'foo2'}, { 'bar2':'bar2'}]} // this has top:0 and sub:1 }, { {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:1 sub:0 }, { {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:0 {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:1 }, ... ]};
有了这个,我想打印每个模型的path,使用索引:[topModel-index subModel-index],所以输出将是这样的:
[0 0] [0 1] [1 0] [2 0] [2 1] ...
我已经使用foreach绑定模型,但我不知道如何访问subModel上下文中的topModel的索引。 下面的例子显示了我尝试过的方法,但是它不起作用,因为我不知道如何访问$ parent引用链接的索引。
<!--ko foreach: topModel --> <!--ko foreach: subModel --> [<span data-bind="text: $parent.index()"></span> <span data-bind="text: $index()"></span>] <!--/ko--> <!--/ko-->
应该打印出来:0 1,0 2,1 0,1 1,1 2,2 0,2 1,…
访问父对象的索引使用
$parentContext.$index()
而不是
$parent.index()
最简单的方法是下载chrome的“knockout context”。 这将显示哪些数据绑定到哪个元素,还可以让您看到该特定绑定元素的可用函数/variables。 对于这种情况,这是一个了不起的工具。