En knockout.js 2.1.0, en una plantilla que usa 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 tengo una estructura de datos como esta:
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, usando índices: [topModel-index subModel-index], para que la salida sea algo como:
[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
...
He enlazado los modelos usando foreach, pero no puedo averiguar cómo acceder al índice de topModel en el contexto del subModel. El siguiente ejemplo muestra un enfoque que he probado, pero no funciona, ya que no puedo averiguar cómo acceder al índice del $ 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, ...
()
después de$index
allí.Respuestas:
para acceder al índice del uso del objeto padre
más bien que
fuente
$parentContext.$index()
con los padres. ; ^) Un poco más sobre $ parentContext aquí , fwiw.$parentContext.$index()
$parentContext.$parentContext.$index()
funciona como era de esperar.La forma más sencilla de averiguarlo es descargar "contexto de eliminación" para Chrome. Esto le muestra qué datos están vinculados a qué elemento y también le permite ver las funciones / variables disponibles para ese elemento vinculado en particular. Es una herramienta increíble para situaciones como estas.
fuente