По сути, я пытаюсь реализовать чрезвычайно простой шаблонный коммутатор RobN http://jsfiddle.net/rniemeyer/XYz8M/, который использует привязку данных «шаблон».Реализация меню в нокауте - переключение между представлениями с разными viewModels
(---SO wants code here - see fiddle for complete code---)
<div id="templateContent" data-bind='template: { name: currentView() }'></div>
var viewModel = {
currentView: ko.observable("template-1"),
toggleView: function() {
this.currentView(this.currentView() === "template-1" ? "template-2" : "template-1");
}
};
ko.applyBindings(viewModel);
Я видел много других простых примеров делают это и все используют один и тот же класс ViewModel для каждого загруженного шаблона. Исключение - приложение SamplePresentation от RobN (у меня недостаточно точек повторения для публикации другой ссылки), в то время как очень впечатляюще, мне было трудно связаться с моим опытом ноу-коу. Я думаю, что он делает это в своем методе section.activate(), но мне это непонятно.
Я хочу использовать эту концепцию в реальном приложении, но имея связанные проблемы контекста. Вот что я пытаюсь сделать: http://jsfiddle.net/jockor/DSEDh/4/
This line intentionally left blank (please see fiddle vs. mangling code here)
В основном при нажатии кнопки/нав ссылку я просто хочу поменять панель содержимого тела с другим шаблоном. Этот шаблон будет нуждаться в собственных данных, поддерживаемых собственной моделью viewModel.
Скриншот выше - это мой вариант упрощенной версии этой концепции - просто попытка переключаться между панелями «Кошки и собаки». Я столкнулся с тем, что данные, привязанные к привязке данных к шаблону, используются для загруженных шаблонов cat/dog.
Может кто-нибудь сказать мне, правильно ли я делаю это, или если я злоупотребляю концепцией привязки шаблона?
Спасибо, сэр, вы действительно Лос-Фрихолес! Я искал способ использовать более одного ViewModel, и я думаю, что вы нашли умный способ сделать это.Я действительно попробовал несколько разных способов обмена данными, но не смог получить правильную комбинацию. Я попробую это в своем приложении и посмотрю, не столкнулся ли я с проблемой синхронизации, которую, как вы подозреваете, может ждать. Еще раз спасибо. – user2003699