這是唯一的官方文檔我能找到ko.applyBindings():沒有任何參數調用ko.applyBindings是否安全?
http://knockoutjs.com/documentation/observables.html
這不是一個真正的正式書面文件,說什麼是可選的/ etc。在測試中,似乎調用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),來限制數據綁定到模型...但我有點像能夠綁定任何東西的自由,不介意(甚至像)在我的代碼中輸入app.viewModels.main,而只是「主」。
謝謝,這聽起來像它可以打破的東西..如果不是現在,在未來的版本至少。我只注意到即使我傳入視圖模型,我仍然可以引用像「應用程序」這樣的全局項目,所以我會繼續並傳遞一個模型,以便至少能夠「正常」。如果我不想使用app.viewModels,還可以節省一些輸入。到處。 – eselk 2013-02-15 22:03:59
對於沒有模型的'applyBindings',有一個有效的用例 - 當頁面上的組件沒有模型運行時,您仍然需要調用它。我只是調用'ko.applyBindings({});'這個技巧。 – Quango 2016-09-22 09:06:58
另一個可能有效的情況ko.applyBindings(數據),也沒有類似於上述@Quango類似簡單結構的模型。例如:http://jsfiddle.net/rniemeyer/KcghG/(來自@rneimeyer) – 2017-10-29 15:41:21