mia preferenza personale è di non contempla i miei applyBindings
chiamate e invece lavorare con un solo ramo namespace globale fuori di questa.
Il mio ragionamento è che per il corretto funzionamento di più binding non è necessario creare conflitti, è necessario prestare molta attenzione agli elementi DOM target selezionati che non cambiano. Sfortunatamente il markup ha una brutta abitudine di cambiare nel tempo, cosa che potrebbe metterti nei guai con i tuoi viewModels in seguito.
Il mio approccio generale che ho usato su un grande progetto di KO è stato
- Uno spazio dei nomi globale di livello superiore per l'intera applicazione ad esempio
myapp
- Split fino blocchi funzionali distinti in file separati. Di solito con il proprio spazio dei nomi distinto. per esempio. `myapp.navigation '
- Se uno spazio dei nomi, in particolare, diventa troppo grande, suddividerlo in ulteriori spazi secondari o, se ciò non è appropriato, suddividere lo stesso spazio dei nomi su più file.
- Mescolare tutti i file alla fine per preservare le prestazioni.
Alcuni codice namespace Recentemente ho usando
Quindi, nel file myapp.navigation si avrebbe
Namespace("myapp.navigation", function() {
var self = this; // your myapp.navigation object
this.someFunction = function() {
}
});
Questa è solo una scorciatoia per utilizzando una funzione di auto invocando a passare in uno spazio dei nomi costruito manualmente. Ti offre una chiusura privata e sei libero di utilizzare più chiamate nello spazio dei nomi con lo stesso spazio dei nomi in un diverso file js.
tuo applyBindings chiamata può ora essere sempre
ko.applyBindings(myapp);
Spero che questo aiuti.
Questa risposta può aiutarti: http://stackoverflow.com/questions/8676988/example-of-knockoutjs-pattern-for-multi-view-applications. Ha tre opzioni per l'utilizzo di più modelli di visualizzazione in Knockout. –