Я пытаюсь создать страницу с использованием компонентов нокаута, и у меня возникли проблемы с попыткой связать несколько компонентов на странице, если они не добавлены одновременно. Насколько я вижу, у меня нет способа прямого доступа к viewmodel компонента, чтобы привязать его к определенному элементу.Компоненты нокаута - не удается применить привязки более одного раза
ko.applyBindings(viewModel, document.getElementById("component1"));
Моя проблема заключается в том, что, так как я, таким образом, должны использовать более общий
ko.applyBindings()
, если добавить еще один компонент на страницу в более позднее время, и вы хотите, чтобы связать его, я получаю «Вы не можете применять привязки несколько раз к одному и тому же элементу». ошибка.
Есть ли способ получить доступ к модели представления компонентов и применить ее непосредственно?
$('body').append('<div id="compoent1" data-bind=\'component: { name:"someComponent"\}'></div>')
ko.applyBindings(viewModel/*How do I get this?*/, document.getElementById("component1"));
Я пробовал только с помощью
ko.applyBindings(document.getElementById("component1"));
Моих объяснений, пожалуй, довольно трудно понять, вот псевдо код, что я пытаюсь сделать:
Add a knockout component
Apply bindings for the knockout component
.... some time later in my single page application
Add another knockout component
Apply bindings for the new knockout component
«Если я добавлю еще один компонент на страницу позже» Как вы добавляете компонент? Не-нокаутом образом (т. Е. С jquery или аналогичным)? – spender
Вы пытаетесь использовать модель просмотра _same_? Если это в вашем коде, вы можете просто ссылаться на него - хотя есть способ получить модель представления с KO, это было бы глупо. А именно 'ko.dataFor'. –
Лучше всего здесь создать [MCVE] (/ help/mcve), сейчас сложно сказать, что вы делаете, и поэтому, как мы можем помочь вам заставить его работать. –