Pouvez-vous appeler ko.applyBindings pour lier une vue partielle?

J’utilise KnockoutJS et j’ai une vue principale et un modèle de vue. Je souhaite qu’une boîte de dialog (l’interface utilisateur jQuery) s’ouvre avec une autre vue à laquelle un modèle de vue enfant séparé doit être lié.

Le HTML pour le contenu du dialog est récupéré à l’aide d’AJAX, je veux donc pouvoir appeler ko.applyBindings une fois la requête terminée, et je veux lier le modèle de vue enfant à la partie du HTML chargée via ajax dans la boîte de dialog .

Est-ce vraiment possible ou dois-je charger TOUTES mes vues et afficher les modèles lorsque la page est initialement ko.applyBindings puis appeler une fois ko.applyBindings ?

ko.applyBindings accepte un second paramètre qui est un élément DOM à utiliser comme racine.

Cela vous permettrait de faire quelque chose comme:

 

Vous pouvez donc utiliser cette technique pour lier un viewModel au contenu dynamic que vous chargez dans votre boîte de dialog. Dans l’ensemble, vous voulez juste faire attention à ne pas appeler plusieurs fois applyBindings sur les mêmes éléments, car vous obtiendrez plusieurs gestionnaires d’événements attachés.

Bien que la réponse de Niemeyer soit une réponse plus correcte à la question, vous pouvez également procéder comme suit:

 

Cela signifie que vous n’avez pas besoin de spécifier l’élément DOM et que vous pouvez même lier plusieurs modèles au même élément, comme ceci:

 

J’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 point intéressant est que j’applique l’atsortingbut data-bind à un élément que je n’ai pas défini:

  var handle = slider.slider().find(".ui-slider-handle").first(); $(handle).attr("data-bind", "tooltip: viewModel.value"); ko.applyBindings(viewModel.value, $(handle)[0]); 

Vous devriez regarder le with liaison, ainsi que controlsDescendantBindings http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.html