En knockout.js 2.1.0, en una plantilla que utiliza el enlace foreach, puede acceder al índice del elemento actual a través de la función $ index(). En un enlace foreach anidado, ¿hay alguna forma de acceder al índice de $ parent desde una plantilla?
Digamos que tiene una estructura de datos como esto:
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 esto, quiero imprimir la ruta a cada modelo utilizando índices: [TOPMODEL índice submodelo-index], por lo que la salida será algo como:
[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
...
he atado los modelos usando foreach, pero no puedo encontrar la manera de acceder índice del TOPMODEL en el contexto de la sub-modelo. El siguiente ejemplo muestra un enfoque que he intentado, pero no funciona, ya que no puedo entender cómo acceder al índice de $ parent referrer.
<!--ko foreach: topModel -->
<!--ko foreach: subModel -->
[<span data-bind="text: $parent.index()"></span>
<span data-bind="text: $index()"></span>]
<!--/ko-->
<!--/ko-->
debe imprimir: 0 1, 0 2, 1 0, 1 1, 1 2, 2, 0, 2 1, ...
En realidad, no necesita ese '()' después del '$ index' allí. –
Además, si pudieras crear un jsfiddle con lo que tienes, eso lo haría más fácil. O publique su fuente de datos y vea el código del modelo. –
Por el momento, solo estoy trabajando en la creación de prototipos, así que no tengo mucho más que el ejemplo dado. Aunque estoy abierto a sugerencias usando otros enfoques. –