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
},
...
]};
これで、インデックスを使用して各モデルへのパスを出力したいと思います:[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、..。