84

is is possible to get the binded ViewModel JavaScript object from a given DOM element?

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

and somewhere else - in rather unrelated code - something like this:

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

it would even be better if I could do something like:

var viewModel = ko.getViewModel( someChildElement ); 

1 Answer 1

143

Knockout has two utility methods that might help here.

  • ko.dataFor will return the ViewModel that the element is bound to.
  • ko.contextFor returns the "binding context" of the current element. The object you get back from this method will return something like:

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

So if I understand your question, you can probably use ko.dataFor here. Here's a simple example using dataFor.

Sign up to request clarification or add additional context in comments.

1 Comment

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.