KO 視圖模型:物件文字與函數
在 Knockout JS 中,可以使用物件文字或函數來宣告視圖模型。雖然兩者的主要目的都是定義可觀察的屬性和計算函數,但它們之間的關鍵差異會影響封裝、靈活性和程式碼組織。
物件文字:
var viewModel = { firstname: ko.observable("Bob") };
對於沒有複雜邏輯或計算函數的簡單視圖模型來說,物件字面量是簡單明了的。但是,它們:
函數:
var viewModel = function() { this.firstname = ko.observable("Bob"); };
函數提供了幾個優點:
最佳實務:
In大多數情況下,建議使用函數來定義視圖模型。它提供了更好的封裝性和靈活性,可以更輕鬆地管理複雜的視圖模型並確保對其進行正確存取。
私有屬性和方法:
基於函數的視圖模型允許使用自我模式在此上下文中創建私有屬性和方法:
var ViewModel = function() { var self = this; self.privateProperty = ko.observable(); self.privateMethod = function() {}; };
綁定函數:
另外,現代瀏覽器和Knockout JS 提供了綁定函數來將函數明確綁定到特定的this 上下文:
var ViewModel = function() { this.items = ko.observableArray(); this.removeItem = function(item) { this.items.remove(item); }.bind(this); };
使用綁定函數可確保 this 引用視圖模型實例,即使在巢狀作用域內呼叫函數時也是如此。
結論:
雖然物件文字和函數都可以用於定義Knockout 視圖模型,但通常首選函數,因為它們在計算函數中具有封裝性、靈活性和高效處理能力。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3