Мои личные предпочтения не дробить свои applyBindings
вызовы и вместо того, чтобы работать с единой глобальной ветви пространства имен от этого.
Мое рассуждение состоит в том, что для множественных привязок для правильной работы и неконфликтности вы должны быть очень осторожны, чтобы выбранные целевые элементы dom не менялись. К сожалению, разметка имеет неприятную привычку меняться со временем, что может вызвать у вас проблемы с вашими взглядами в будущем.
Мой общий подход, который я использовал на очень большом проекте KO был
- Одно глобальное пространство имен верхнего уровня для всего приложения, например
myapp
- дробить отдельные функциональные блоки в отдельные файлы. Обычно с их собственным пространством имен. например `myapp.navigation '
- Если одно пространство имен, в частности, становится слишком большим, разделите его на дополнительные пространства имен или если это не подходит, разделите одно и то же пространство имен на несколько файлов.
- Заполните все файлы в конце, чтобы сохранить производительность.
Некоторые пространства имен код, который я недавно использовал
Так что в вашем файле myapp.navigation вы бы
Namespace("myapp.navigation", function() {
var self = this; // your myapp.navigation object
this.someFunction = function() {
}
});
Это просто сокращение для использования функции самостоятельно вызывающую к передать в построенное вручную пространство имен. Это дает вам закрытое закрытие, и вы можете использовать несколько вызовов в пространстве имен с тем же пространством имен в другом файле js.
Вашего applyBindings вызов может теперь всегда быть
ko.applyBindings(myapp);
Надеется, что это помогает.
Этот ответ может помочь вам: http://stackoverflow.com/questions/8676988/example-of-knockoutjs-pattern-for-multi-view-applications. Он имеет три варианта использования нескольких моделей представлений в Knockout. –