Получите динамически вставляемый HTML для работы с Knockoutjs

Я использую JQuery DataTables для всех своих таблиц из-за всех хороших встроенных функций, но кажется, что единственный способ настроить макет таблицы — установить атрибут опции «sDom» для DataTable и использовать что-то вроде $("div.SOMECLASS").html(HTML_HERE) для вставки настроенный html в таблицу. (К вашему сведению, я просто пытаюсь настроить заголовок).

Проблема в том, что я хочу, чтобы вставленный html использовал привязку к нокауту. Knockout, похоже, не инициализирует привязку таким образом.

Есть ли способ обойти это?

Это часть html, которую я хочу вставить. Это в значительной степени раскрывающийся список некоторых пользовательских функций фильтрации для таблицы.

'<li><a data-bind="click: Filter(\'Severity 1\', 2)">Severity 1</a></li>'

person T.Ho    schedule 31.05.2012    source источник
comment
с Jquery вы можете использовать .live или .on для обработки динамически созданного контента.   -  person Trinh Hoang Nhu    schedule 31.05.2012
comment
Возможный дубликат отключить привязку данных к динамически генерируемым элементам   -  person Liam    schedule 28.07.2017


Ответы (1)


Вы должны вызвать эту функцию после вставки динамического элемента HTML

ko.applyBindings(viewModel, elementContainingDynamicContent)

Пример здесь http://jsfiddle.net/rniemeyer/FCN5p/

person Trinh Hoang Nhu    schedule 31.05.2012
comment
Спасибо, это именно то, что я ищу. - person T.Ho; 31.05.2012
comment
Это правильный ответ, я не уверен, почему его было так сложно найти. Необходимость динамической загрузки содержимого страницы не является чем-то необычным. Спасибо! - person Ryan Ore; 04.09.2013
comment
Примечание для всех, чтобы это работало, используйте document.getElementById("elementId") для получения элемента DOM; не используйте jquery $('#elementId'), иначе ko выдаст ошибку: tinyurl.com/laaqf7j - person raffian; 03.02.2014
comment
Если у вас уже есть элемент jQuery, $element[0] также работает. - person Jeremy J Starcher; 12.05.2014