KO ビュー モデル: オブジェクト リテラルと関数
Knockout JS では、オブジェクト リテラルまたは関数を使用してビュー モデルを宣言できます。どちらの主な目的は、監視可能なプロパティと計算関数を定義することですが、それらの主な違いは、カプセル化、柔軟性、コード構成に影響を与えます。
オブジェクト リテラル:
var viewModel = { firstname: ko.observable("Bob") };
オブジェクト リテラルは、複雑なロジックや計算関数を持たない単純なビュー モデルにとっては単純で簡潔です。ただし、
関数:
var viewModel = function() { this.firstname = ko.observable("Bob"); };
関数にはいくつかの利点があります:
ベスト プラクティス:
ほとんどの場合、関数を使用してビュー モデルを定義することをお勧めします。カプセル化と柔軟性が向上し、複雑なビュー モデルの管理が容易になり、これへの適切なアクセスが保証されます。
プライベート プロパティとメソッド:
関数ベースのビュー モデルself-pattern:
var ViewModel = function() { var self = this; self.privateProperty = ko.observable(); self.privateMethod = function() {}; };
バインド関数:
代わりに、最新のブラウザと Knockout JS は、関数を特定のコンテキストに明示的にバインドするバインド関数を提供します:
var ViewModel = function() { this.items = ko.observableArray(); this.removeItem = function(item) { this.items.remove(item); }.bind(this); };
バインド関数を使用すると、入れ子になったスコープ内から関数を呼び出した場合でも、これが View Model インスタンスを確実に参照します。
結論:
オブジェクト リテラルと関数の両方をノックアウト ビュー モデルの定義に使用できますが、カプセル化、柔軟性、および計算関数での効率的な処理の点で関数の方が一般的に好まれます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3