est-il possible d’obtenir l’objet JavaScript ViewModel lié à partir d’un élément DOM donné?
ko.applyBindings( gLoginViewModel, document.getElementById("login-form") );
ko.applyBindings( gLoginViewModel, document.getElementById("register-form") );
et ailleurs - dans du code plutôt indépendant - quelque chose comme ceci:
var viewModel = ko.getViewModel( formElement );
viewModel.someObservable( someData ); // observable available in all ViewModels
ce serait même mieux si je pouvais faire quelque chose comme:
var viewModel = ko.getViewModel( someChildElement );
Merci d'avance!
Knockout a deux méthodes utilitaires qui pourraient aider ici.
ko.dataFor
retournera le ViewModel auquel l'élément est lié.ko.contextFor
renvoie le "contexte de liaison" de l'élément en cours. L'objet que vous récupérez 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 en utilisant dataFor
.