knockout.js – 从DOM元素获取ViewModel

是可以从给定的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 ); 

提前致谢!

淘汰赛有两个实用的方法 ,可能会帮助这里。

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

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

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