0

大まかに言うと、MVVM パターンのさまざまなコンポーネントは次のとおりです。

  • Model: これは、サーバーによって送信され、サーバーに送り返されたデータを表します。これには、UI の表示に関連する状態は含まれません
  • ViewModel: これは 1 つまたは複数のモデルから構成されます。これには、UI 操作用の状態 (ボタンが有効か無効か) が含まれます。UI 操作用のすべてのロジックがここに格納されます。このレイヤーは、どの UI フレームワークにも依存しません (jQuery 呼び出しはありません)。
  • View: これは、UI フレームワーク/基礎となる UI コントロールと密結合しています。1 つのビューは、1 つのビュー モデルのみを観察します。ビュー モデルは、1 つ以上のビューで観察できます。ビューは、ビュー モデルとの 2 つのバインドを行う責任があります。
  • A presenter/coordinator: 従来の実装の一部ではありませんが、それがない場合、ビュー モデルはあまりにも多くの責任を負うことになります。この男は、ajax 呼び出し (get/post) の作成、グローバル イベント アグリゲーターでのイベントのリッスンなどを調整するのに役立ちます。

Standalone Backbone には、ビュー モデルとデータ バインディングの概念がありません。そのシナリオでは、サーバーから返されたデータをBackbone.Modelオブジェクトとしてモデル化できます。バインディングは手動で行われ、ビューモデルの同期には POJO を使用できます。

データ バインディングに Stickit を使用する場合、ビュー モデルは のインスタンスである必要があるようですBackbone.Model。主な理由は、バインディングが a のコンテキスト内で機能し、Backbone.Viewaがオブジェクトがビューのプロパティとして存在することをBackbone.View期待しているためです。Backbone.Modelまた、Backbone.Model は変更イベントを発生させます。POJOの観測は難しいと思います。繰り返しますが、これは Stickit のドキュメントを読んだ私の理解です。間違っている場合は修正してください。

Aには、などBackbone.Modelのビュー モデルの観点からは意味をなさない他のメソッドがあります。別の mvvm ライブラリ. をビューモデルに変換できます。本格的な を渡す代わりに、get/set メソッドを持ち、プロパティが変更されたときに変更イベントを発生させる任意の POJO を受け入れることもできます。savefetchKnockbackBackbone.ModelKnockout.jsBackbone.Model

Stickit には、get/set メソッドを持ち、変更イベントを発生させる POJO を渡すことができる同様のコントラクトがありますか? おすすめの使い方は?

4

1 に答える 1

0

モデルが実際に Backbone.Model のインスタンスであることを必要とする Backbone.Stickit のソースには何もありません。したがって、Stickit には、Backbone.Model によって提供されるコントラクトをサポートするオブジェクトが必要なだけのようです。set()、get()、および on() のさまざまなアプリケーションだけで十分です。

Stickit のテスト スイートをご覧ください。これらのテストに合格した独自のモデル API を作成した場合 (Backbone.Model をtestScaffolding.jsの独自の実装に置き換え、テストが完全であると仮定して)、そのモデルを Stickit で使用できるはずです。

編集:質問に直接対処していない可能性があります。Stickit は、Backbone.View で使用すること、およびそのビューに、または関数に渡すことができるパラメータmodelによって指定されたその他のオブジェクトがあり、Backbone.Model によって提供されるコントラクトを満たすことのみを必要とします。optionalModelstickit()

于 2014-04-15T21:58:08.593 に答える