knockout.js - 从DOM元素获取ViewModel

Dir*_*oer 76 javascript knockout.js

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

ko.applyBindings( gLoginViewModel, document.getElementById("login-form") );
ko.applyBindings( gLoginViewModel, document.getElementById("register-form") );
Run Code Online (Sandbox Code Playgroud)

和其他地方 - 在相当不相关的代码 - 这样的事情:

var viewModel = ko.getViewModel( formElement );
viewModel.someObservable( someData ); // observable available in all ViewModels
Run Code Online (Sandbox Code Playgroud)

如果我可以做以下事情会更好:

var viewModel = ko.getViewModel( someChildElement );
Run Code Online (Sandbox Code Playgroud)

提前致谢!

And*_*ker 129

Knockout有两种实用方法可能对此有所帮助.

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

    { 
        $data: ...,
        $parents,
        $root
    }
    
    Run Code Online (Sandbox Code Playgroud)

所以如果我理解你的问题,你可以ko.dataFor在这里使用.这里有一个简单的例子使用dataFor.

  • 好吧,他们在这里记录:http://knockoutjs.com/documentation/unobtrusive-event-handling.html :) (11认同)