Knockout.js - 从 DOM 元素获取 ViewModel [英] knockout.js - Get ViewModel from DOM element
问题描述
是否可以从给定的 DOM 元素中获取绑定的 ViewModel JavaScript 对象?
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 );
推荐答案
Knockout 有两个 实用程序方法可能对这里有帮助.
Knockout has two utility methods that might help here.
ko.dataFor
将返回元素绑定到的 ViewModel.ko.contextFor
返回当前元素的绑定上下文".您从该方法返回的对象将返回如下内容:
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
}
所以如果我理解你的问题,你可以在这里使用 ko.dataFor
.这是一个使用 dataFor
的简单示例.
So if I understand your question, you can probably use ko.dataFor
here. Here's a simple example using dataFor
.
这篇关于Knockout.js - 从 DOM 元素获取 ViewModel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!