2012-05-31 10 views
38

Estoy usando JQuery DataTables para todas mis tablas debido a todas las agradables características incorporadas, pero parece que la única forma de personalizar el diseño de la tabla es establecer la opción "sDom" para el DataTable y use algo como $("div.SOMECLASS").html(HTML_HERE) para insertar el html personalizado en la tabla. (Para su información, estoy tratando de personalizar el encabezado).Obtener HTML insertado dinámicamente para trabajar con knockoutjs

El problema es que quiero que el html insertado utilice el enlace knockoutjs. Knockout no parece inicializar el enlace de esta manera.

¿Hay alguna forma de evitar esto?

Esto es parte del html que deseo insertar. Es más o menos una lista desplegable de algunas funciones de filtro personalizadas para la tabla.

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

con jQuery puede utilizar .live o .en para manejar el contenido creado dinámica –

+0

Posible duplicado de [knockout data-bind en elementos generados dinámicamente] (https://stackoverflow.com/questions/11066732/knockout-data-bind-on-dynamically-generated-elements) – Liam

Respuesta

60

Tienes que llamar a esta función después de elemento de inserción HTML dinámico

ko.applyBindings(viewModel, elementContainingDynamicContent)

Ejemplo aquí http://jsfiddle.net/rniemeyer/FCN5p/

+1

Gracias, eso es exactamente lo que estoy buscando. –

+1

Esta es la respuesta correcta, no estoy seguro de por qué fue tan difícil de encontrar. No puede ser tan raro tener que cargar el contenido de la página de forma dinámica. ¡Gracias! –

+1

Nota para todos, para que esto funcione, use 'document.getElementById (" elementId ")' para obtener un elemento DOM; no use jquery '$ ('# elementId')', de lo contrario, ko genera un error: http://tinyurl.com/laaqf7j – raffian

Cuestiones relacionadas