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、..。
()
その後は実際には必要ありません$index
。