Pregunta

Recién estoy comenzando con knockout.js.tengo un foreach vinculante como este, que funciona bien:

<ul data-bind="foreach: people">
   <li> .... </li>
</ul>

people es parte de mi modelo al que le paso ko.applyBindings.Según la documentación, lo siguiente también debería funcionar:

<ul data-bind="foreach: {data: people}"> 

Pero no es así.La lista permanece vacía, pero no veo ningún error en la ventana de error de mi navegador.¿Alguna pista de lo que podría estar haciendo mal?¿Existe alguna diferencia sutil entre ambas llamadas que no veo?

Mi idea es pasar controladores para afterAdd a foreach.Por lo tanto necesito la segunda forma de llamarlo.

¿Fue útil?

Solución 2

Sólo para que conste:La solución es un poco extraña y la fuente del problema fue otro error en mi código. people se inicializa mediante ko.observableArray.Cuando obtuve nuevos datos del servidor, actualicé mi modelo de esta manera:

model.people(ko.observableArray(newData));

Ahora sé que esta es la forma correcta de hacerlo:

model.people(newData);

Por alguna razón, la primera versión todavía funciona con ciertas especificaciones de vinculación de plantillas, pero no para todas.El segundo funciona bien en todos los casos.

Otros consejos

Creo que en realidad estás buscando la plantilla de encuadernación.Foreach es un acceso directo a él, pero si necesita afterAdd, puede usar el enlace completo:

<ul data-bind='template: { foreach: people,
                        afterAdd: myPostProcessingLogic }'> </ul>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top