Я использую KnockoutJS и имею основной вид и вид модели. Я хочу, чтобы диалог (пользовательский интерфейс jQuery) всплывал с другим представлением, с которым должна быть связана отдельная модель дочернего представления.
HTML-код для содержимого диалога извлекается с использованием AJAX, поэтому я хочу иметь возможность вызова ko.applyBindings
после завершения запроса, и я хочу привязать модель дочернего представления только к той части HTML-кода, которая загружается через ajax внутри диалогового элемента div.
Это действительно возможно, или мне нужно загрузить ВСЕ мои представления и модели просмотра, когда страница первоначально загружается, а затем вызывать ko.applyBindings
один раз?
источник
ko.cleanNode(document.getElementById("one")
для очистки, либоko.removeNode(document.getElementById("one")
для очистки и удаления узла из DOM.cleanNode
иremoveNode
не удалит обработчики событий, поэтому будьте осторожны. В некоторых случаях предпочтительно использоватьtemplate
илиwith
привязку к этим областям, поэтому у вас есть новые визуализированные элементы.$(element).unbind();
удалить все обработчики.Хотя ответ Нимейер является более правильным ответом на этот вопрос, вы могли бы также сделать следующее:
Это означает, что вам не нужно указывать элемент DOM, и вы даже можете привязать несколько моделей к одному элементу, например так:
источник
with
не дешево, смотрите: ссылкаМне удалось связать пользовательскую модель с элементом во время выполнения. Код здесь: http://jsfiddle.net/ZiglioNZ/tzD4T/457/
Интересно, что я применяю атрибут data-bind к элементу, который не определил:
источник
Вы должны посмотреть на
with
привязку, а такжеcontrolsDescendantBindings
http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.htmlисточник