83 votes

knockout.js - Obtenir ViewModel à partir de l'élément DOM

il est possible d'obtenir les bindings ViewModel objet JavaScript à partir d'un élément du DOM?

ko.applyBindings( gLoginViewModel, document.getElementById("login-form") );
ko.applyBindings( gLoginViewModel, document.getElementById("register-form") );

et d'ailleurs plutôt sans rapport avec code - quelque chose comme cela:

var viewModel = ko.getViewModel( formElement );
viewModel.someObservable( someData ); // observable available in all ViewModels

il serait même mieux si je pouvais faire quelque chose comme:

var viewModel = ko.getViewModel( someChildElement );

Merci à l'avance!

140voto

Andrew Whitaker Points 58588

Knock-out a deux méthodes utilitaires qui peuvent vous aider ici.

  • ko.dataFor sera de retour le ViewModel que l'élément est lié.
  • ko.contextFor renvoie le "contexte de liaison" de l'élément courant. L'objet que vous obtenez de retour de cette méthode retournera quelque chose comme:

    { 
        $data: ...,
        $parents,
        $root
    }
    

Donc, si je comprends votre question, vous pouvez probablement utiliser ko.dataFor ici. Voici un exemple simple à l'aide de dataFor.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X