Estou usando o KnockoutJS e tenho uma visualização principal e um modelo de visualização. Eu quero que uma caixa de diálogo (a interface do usuário do jQuery) seja exibida com outra exibição à qual um modelo de exibição filho separado será vinculado.
O HTML para o conteúdo da caixa de diálogo é recuperado usando AJAX, portanto, desejo poder chamar ko.applyBindings
depois que a solicitação for concluída e quero vincular o modelo de exibição filho apenas à parte do HTML carregada via ajax dentro da div da caixa de diálogo.
Isso é realmente possível ou preciso carregar TODAS as minhas visualizações e modelos de exibição quando a página é carregada inicialmente e depois ligar ko.applyBindings
uma vez?
fonte
ko.cleanNode(document.getElementById("one")
para limpar as coisas ouko.removeNode(document.getElementById("one")
limpar as coisas e remover o nó do DOM.cleanNode
eremoveNode
não removerá os manipuladores de eventos, portanto, tenha cuidado. Em alguns casos, é preferível usar otemplate
ouwith
binding nessas áreas, para que você tenha novos elementos renderizados.$(element).unbind();
remover todos os manipuladores.Embora a resposta de Niemeyer seja uma resposta mais correta para a pergunta, você também pode fazer o seguinte:
Isso significa que você não precisa especificar o elemento DOM e pode vincular vários modelos ao mesmo elemento, assim:
fonte
with
não sai barato, veja: linkEu consegui vincular um modelo personalizado a um elemento em tempo de execução. O código está aqui: http://jsfiddle.net/ZiglioNZ/tzD4T/457/
O interessante é que aplico o atributo data-bind a um elemento que não defini:
fonte
Você deve consultar a
with
encadernação, além decontrolsDescendantBindings
http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.htmlfonte