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 );
Спасибо заранее!
Ответы
Ответ 1
Нокаут имеет два утилиты, которые могут помочь здесь.
-
ko.dataFor
вернет ViewModel, к которому привязан элемент.
-
ko.contextFor
возвращает "контекст привязки" текущего элемента. Объект, который вы вернетесь из этого метода, вернет что-то вроде:
{
$data: ...,
$parents,
$root
}
Итак, если я понимаю ваш вопрос, вы можете использовать ko.dataFor
здесь. Вот простой пример, используя dataFor
.