knockout.js - 从DOM元素获取ViewModel

时间:2012-12-23 23:26:34

标签: javascript knockout.js

是否可以从给定的DOM元素中获取绑定的ViewModel JavaScript对象?

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 个答案:

答案 0 :(得分:126)

Knockout有两个utility methods可能对此有帮助。

  • ko.dataFor将返回元素绑定的ViewModel。
  • ko.contextFor返回当前元素的“绑定上下文”。从此方法返回的对象将返回如下内容:

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

因此,如果我理解您的问题,您可以在此处使用ko.dataForHere's a simple example使用dataFor