这是我可以在 ko.applyBindings() 上找到的唯一官方文档:
http://knockoutjs.com/documentation/observables.html
这不是一份真正的正式书面文件,它准确地说明了什么是可选的/等。在测试中,调用 ko.applyBindings() 似乎允许在全局范围内进行绑定,并且看起来工作正常。有没有人研究过源代码(或者比我更了解 KO),知道这是否安全?有性能问题吗?
这是我正在处理的 SPA 的“应用程序”对象的开始:
var app = {
self: this,
datacontext: new DataContext(),
dataservice: new DataService(),
viewModels: {
main: new MainViewModel(),
folderDetails: new FolderDetailsViewModel()
},
init: function() {
ko.applyBindings();
Sammy(function() {
this.get('#:folder', function() {
self.doFolderRoute(this.params.folder);
});
// Override this function so that Sammy doesn't mess with forms
this._checkFormSubmission = function(form) {
return (false);
};
}).run();
},
doFolderRoute: function(id) {
console.log("doFolderRoute: " + id);
}
}
我可以做 ko.applyBindings(self.viewModels),将数据绑定限制到模型......但我有点喜欢能够绑定到任何东西的自由,并且不介意(甚至喜欢)输入应用程序。 viewModels.main 在我的代码中,而不是“main”。