Get dynamically inserted HTML to work with knockoutjs

T.Ho picture T.Ho · May 31, 2012 · Viewed 22.3k times · Source

I'm using JQuery DataTables for all my tables because of all the nice built-in features, but it seems the only way to customize the table layout is to set the "sDom" option attribute for the DataTable and use something like $("div.SOMECLASS").html(HTML_HERE) to insert the customized html into the table. (FYI, i'm just trying to customize the header).

The problem is I want the inserted html to use knockoutjs binding. Knockout doesn't seem to initialize the binding this way.

Is there a way to work around this?

This is part of the html that I want to insert. It's pretty much a drop down list of some custom filter functions for the table.

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

Answer

Trinh Hoang Nhu picture Trinh Hoang Nhu · May 31, 2012

You have to call this function after insert dynamic HTML element

ko.applyBindings(viewModel, elementContainingDynamicContent)

Example here http://jsfiddle.net/rniemeyer/FCN5p/