2012-05-31 5 views
38

Sto usando JQuery DataTables per tutti i miei tavoli a causa di tutte le belle funzionalità integrate, ma sembra che l'unico modo per personalizzare il layout della tabella sia impostare l'opzione "sDom" attributo per DataTable e utilizzare qualcosa come $("div.SOMECLASS").html(HTML_HERE) per inserire l'html personalizzato nella tabella. (FYI, sto solo cercando di personalizzare l'intestazione).Ottieni HTML inserito dinamicamente per funzionare con knockoutjs

Il problema è che voglio che l'html inserito usi il binding di knockoutjs. Knockout non sembra inizializzare l'associazione in questo modo.

C'è un modo per aggirare questo problema?

Questo è parte del codice HTML che voglio inserire. È praticamente un elenco a discesa di alcune funzioni di filtro personalizzate per la tabella.

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

con jQuery è possibile utilizzare .Live o .on per gestire contenuti dinamici creati –

+0

Possibile duplicato di [knockout data-bind su elementi generati dinamicamente] (https://stackoverflow.com/questions/11066732/knockout-data-bind-on-dynamically-generated-elements) – Liam

risposta

60

Dovete chiamare questa funzione dopo elemento inserto HTML dinamico

ko.applyBindings(viewModel, elementContainingDynamicContent)

Esempio qui http://jsfiddle.net/rniemeyer/FCN5p/

+1

Grazie, è esattamente quello che sto cercando. –

+1

Questa è la risposta corretta, non sono sicuro del perché fosse così difficile da trovare. Non può essere così raro dover caricare il contenuto della pagina in modo dinamico. Grazie! –

+1

Nota a tutti, perché funzioni, usare 'document.getElementById (" elementId ")' per ottenere un elemento DOM; non usare jquery '$ ('# elementId')', altrimenti, ko solleva un errore: http://tinyurl.com/laaqf7j – raffian

Problemi correlati