In knockout.js 2.1.0, in un modello che utilizza l'associazione foreach, è possibile accedere all'indice dell'elemento corrente tramite la funzione $ index(). In un binding foreach nidificato esiste un modo per accedere all'indice del $ parent da un modello?
Dire che ho una struttura di dati come questo:
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
},
...
]};
Con questo, voglio stampare il percorso di ogni modello, utilizzando gli indici: [topmodel-index sottomodello-indice], in modo che l'uscita sarà qualcosa di simile a:
[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
...
ho legato i modelli utilizzando foreach, ma io non riesco a capire come accedere indice della Topmodel nel contesto del sottomodello. L'esempio seguente mostra un approccio che ho provato, ma non funziona, poiché non riesco a capire come accedere all'indice del referrer $ parent.
<!--ko foreach: topModel -->
<!--ko foreach: subModel -->
[<span data-bind="text: $parent.index()"></span>
<span data-bind="text: $index()"></span>]
<!--/ko-->
<!--/ko-->
Dovrebbe stampare: 0 1, 0 2, 1 0, 1 1, 1 2, 2 0, 2 1, ...
In realtà non è necessario che '()' dopo '$ indice' lì. –
Inoltre, se potessi creare un jsfiddle con quello che hai, sarebbe più facile. Oppure pubblica la tua fonte di dati e visualizza il codice del modello. –
Per ora, sto solo lavorando alla prototipazione, quindi non ho molto più dell'esempio dato. Sono aperto a suggerimenti usando altri approcci, però. –