J'utilise KnockoutJS et j'ai une vue principale et un modèle de vue. Je veux qu'une boîte de dialogue (celle de jQuery UI) s'affiche avec une autre vue à laquelle un modèle de vue enfant distinct doit être lié.
Le code HTML du contenu de la boîte de dialogue est récupéré à l'aide d'AJAX, je veux donc pouvoir appeler ko.applyBindings
une fois la demande terminée et je veux lier le modèle de vue enfant à la partie du code HTML chargée via ajax dans la boîte de dialogue div.
Est-ce réellement possible ou dois-je charger TOUTES mes vues et modèles de vues lors du chargement initial de la page, puis appeler ko.applyBindings
une fois?
la source
ko.cleanNode(document.getElementById("one")
pour nettoyer les choses, soitko.removeNode(document.getElementById("one")
pour nettoyer les choses et supprimer le nœud du DOM.cleanNode
etremoveNode
ne supprimera pas les gestionnaires d'événements, utilisez donc une certaine prudence. Dans certains cas, il est préférable d'utiliser letemplate
ou lawith
liaison sur ces zones, afin que de nouveaux éléments soient rendus.$(element).unbind();
donc supprimer tous les gestionnaires.Bien que la réponse de Niemeyer soit une réponse plus correcte à la question, vous pouvez également faire ce qui suit:
Cela signifie que vous n'avez pas besoin de spécifier l'élément DOM, et vous pouvez même lier plusieurs modèles au même élément, comme ceci:
la source
with
n'est pas bon marché, voir: linkJ'ai réussi à lier un modèle personnalisé à un élément lors de l'exécution. Le code est ici: http://jsfiddle.net/ZiglioNZ/tzD4T/457/
Le bit intéressant est que j'applique l'attribut data-bind à un élément que je n'ai pas défini:
la source
Vous devriez regarder la
with
liaison, ainsi quecontrolsDescendantBindings
http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.htmlla source