Я следую подходу, предложенному в этом ответе, чтобы иметь дело с несколькими моделями просмотра и использовать их в разных частях моей страницы.
Некоторые модели просмотра будут использоваться в нескольких частях страницы и в разных элементах, поэтому я предпочитаю не использовать второе предлагаемое решение, которое рекомендует применение моделей представления к определенным элементам DOM.
Итак, у меня есть что-то вроде этого:
window.masterVM = {
vmA : new VmA(),
vmB : new VmB(),
vmC : new VmC(),
}
ko.applyBindings(masterVM, $(':root').get(0));
Теперь в моем HTML я делаю такие вещи:
<div data-bind="click: masterVM.vmA.demo">Click</div>
<div data-bind="click: masterVM.vmC.demo">Click</div>
Это делает его доступным в объекте окна для всех, кто хочет выполнить эти методы, просто выполнив: window.masterVM.vmC.demo()
.
Есть ли способ скрыть это и инкапсулировать его таким образом, чтобы он был недоступен извне?