Knockout.js - 从 DOM 元素获取 ViewModel [英] knockout.js - Get ViewModel from DOM element

查看:39
本文介绍了Knockout.js - 从 DOM 元素获取 ViewModel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以从给定的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆