Mi preferencia personal es que no se separó mis applyBindings
llamadas y en lugar de trabajar con una sola rama espacio de nombres global fuera de este.
Mi razonamiento es que para que las vinculaciones múltiples funcionen correctamente y no entren en conflicto, debe tener mucho cuidado de que los elementos dom seleccionados no cambien. Desafortunadamente, el marcado tiene un desagradable hábito de cambiar con el tiempo, lo que puede ocasionarle problemas con su viewModels más adelante.
Mi enfoque general que he utilizado en un proyecto muy grande KO ha sido
- Un espacio de nombres de primer nivel mundial para toda la aplicación, por ejemplo
myapp
- Dividir bloques funcionales separados en archivos separados. Usualmente con su propio espacio de nombres distintivo. p.ej. `myapp.navigation '
- Si un espacio de nombres en particular se vuelve demasiado grande, divídalo en más espacios de nombres secundarios o, si eso no es apropiado, divida el mismo espacio de nombres en varios archivos.
- Mash todos los archivos al final para preservar el rendimiento.
Algunos código de espacio de nombres Recientemente he estado usando
Así que en su archivo myapp.navigation que tendría
Namespace("myapp.navigation", function() {
var self = this; // your myapp.navigation object
this.someFunction = function() {
}
});
Esto es sólo la abreviatura para el uso de una función de auto invocación a pasar en un espacio de nombre construido manualmente. Le da un cierre privado y puede usar varias llamadas de Namespace con el mismo espacio de nombres en diferentes archivos js.
Su applyBindings llamada ahora siempre puede ser
ko.applyBindings(myapp);
Espero que esto ayude.
Esta respuesta puede ayudarlo: http://stackoverflow.com/questions/8676988/example-of-knockoutjs-pattern-for-multi-view-applications. Tiene tres opciones para usar modelos de vista múltiple en Knockout. –