Estoy usando KnockoutJS y tengo una vista principal y un modelo de vista. Quiero que aparezca un cuadro de diálogo (el de jQuery UI) con otra vista a la que se vinculará un modelo de vista secundaria independiente.
El HTML para el contenido del cuadro de diálogo se recupera usando AJAX, por lo que quiero poder llamar ko.applyBindings
una vez que se haya completado la solicitud, y quiero vincular el modelo de vista secundaria a solo la parte del HTML cargado a través de ajax dentro del cuadro de diálogo div.
¿Es esto realmente posible o necesito cargar TODAS mis vistas y ver modelos cuando la página se carga inicialmente y luego llamar ko.applyBindings
una vez?
fuente
ko.cleanNode(document.getElementById("one")
para limpiar cosas oko.removeNode(document.getElementById("one")
para limpiar y eliminar el nodo del DOM.cleanNode
yremoveNode
no eliminará los controladores de eventos, a fin de utilizar cierta cautela. En algunos casos, es preferible utilizar eltemplate
owith
vinculante sobre esas zonas, por lo que tiene nuevos elementos prestados.$(element).unbind();
para eliminar todos los controladores.Si bien la respuesta de Niemeyer es una respuesta más correcta a la pregunta, también puede hacer lo siguiente:
Esto significa que no tiene que especificar el elemento DOM, e incluso puede vincular varios modelos al mismo elemento, de esta manera:
fuente
with
no es barato, ver: enlaceHe logrado vincular un modelo personalizado a un elemento en tiempo de ejecución. El código está aquí: http://jsfiddle.net/ZiglioNZ/tzD4T/457/
Lo interesante es que aplico el atributo de enlace de datos a un elemento que no definí:
fuente
Debe mirar el
with
enlace, así comocontrolsDescendantBindings
http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.htmlfuente