2012-03-28 34 views
18

Esto es probablemente bastante simple, pero parece que no puedo encontrarlo fácilmente. En knockout.js, ¿cómo imprimiría el índice de un elemento en una matriz observable sobre la que está iterando utilizando el enlace foreach?Knockout.js imprimir el índice del objeto en foreach

+2

En KO 2.1.0 (la versión beta ya está disponible), puede usar '$ index' para obtener el índice dentro de un foreach. Aquí está el hilo beta: https://groups.google.com/d/topic/knockoutjs/LdUfjGNZOj8/discussion. De manera similar a lo que Matt describe en su respuesta a continuación, utilizo esta técnica (agrego la función 'indexado' a las Apariciones observables): http://stackoverflow.com/questions/9760861/apply-a-class-to-every-nth-template- element-with-knockoutjs –

+0

@RPNiemeyer: ¡Estoy aproximadamente 98% seguro de que te lo robé en el foro de Knockout! –

+0

@MattBurland no se preocupe! –

Respuesta

11

No puede. No directamente de todos modos. Yo uso esta función a mí mismo para agregar una propiedad de índice para objetos en mis ObservableArrays:

function indexSubscribe(array) { 
     array.subscribe(function() { 
      for (var i = 0, j = array().length; i < j; i++) { 
       var item = array()[i]; 
       if (!item.index) { 
        item.index = ko.observable(i); 
       } else { 
        item.index(i); 
       } 
      } 
     }); 
    }; 

Luego, en mi modelo de vista, puedo hacer algo como esto:

this.whatevers = ko.observableArray(); 
indexSubscribe(this.whatevers); 
+0

+1, solución pulida – Tyrsius

0

La siguiente solución puede ser tardía. Pero si su elección preferida es con viewmodel, la siguiente solución lo ayudará con la última solución.

De acuerdo con Knockout 3.1.0 y las bibliotecas de arriba tiene un trabajo simple. El index se puede pasar como argumento secundario al arrayForEach.

var items = ["Mercedes", "Volvo", "BMW"]; 

ko.utils.arrayForEach(items, function(item, index) { 
    console.log(item + ' ' + index); 
}); 

Espero que esta solución pueda ayudar a alguien.

Cuestiones relacionadas