Подтвердить что ты не робот

Knockout.js - Получить ViewModel из элемента DOM

можно получить связанный объект объекта ViewModel ViewModel с данным элементом DOM?

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

и где-то еще - в довольно несвязанном коде - что-то вроде этого:

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

было бы лучше, если бы я мог сделать что-то вроде:

var viewModel = ko.getViewModel( someChildElement );

Спасибо заранее!

4b9b3361

Ответ 1

Нокаут имеет два утилиты, которые могут помочь здесь.

  • ko.dataFor вернет ViewModel, к которому привязан элемент.
  • ko.contextFor возвращает "контекст привязки" текущего элемента. Объект, который вы вернетесь из этого метода, вернет что-то вроде:

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

Итак, если я понимаю ваш вопрос, вы можете использовать ko.dataFor здесь. Вот простой пример, используя dataFor.