In knockout.js 2.1.0 können Sie in einer Vorlage mit der foreach-Bindung über die Funktion $ index () auf den Index des aktuellen Elements zugreifen. Gibt es in einer verschachtelten foreach-Bindung eine Möglichkeit, über eine Vorlage auf den Index des $ parent zuzugreifen?
Angenommen, ich habe eine Datenstruktur wie diese:
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
},
...
]};
Damit möchte ich den Pfad zu jedem Modell unter Verwendung von Indizes drucken: [topModel-index subModel-index], so dass die Ausgabe ungefähr so aussieht:
[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
...
Ich habe die Modelle mit foreach gebunden, kann aber nicht herausfinden, wie ich im Kontext des Submodells auf den Index des topModels zugreifen kann. Das folgende Beispiel zeigt einen Ansatz, den ich ausprobiert habe, der jedoch nicht funktioniert, da ich nicht herausfinden kann, wie auf den Index des $ parent-Referrers zugegriffen werden kann.
<!--ko foreach: topModel -->
<!--ko foreach: subModel -->
[<span data-bind="text: $parent.index()"></span>
<span data-bind="text: $index()"></span>]
<!--/ko-->
<!--/ko-->
Sollte ausdrucken: 0 1, 0 2, 1 0, 1 1, 1 2, 2 0, 2 1, ...
()
nach dem$index
dort eigentlich nicht mehr .