3

私はBackboneを使い始めたばかりで、ある点で混乱しています。

ドキュメントのリストを表示するページがあります。

リスト内のドキュメントをクリックすると、編集用のドキュメント全体が開きます。

私が理解していることから、バックボーンでこのリストをモデル化する適切な方法は、ドキュメントモデルのコレクションとしてです。

var DocList = Backbone.Collection.extend({
  model: document
});

ただし、ドキュメントモデルは大きくなり、多くのプロパティがあります。リストにそのすべての情報を表示する必要はありません。

次のようなものが望ましいのではないかと思います...

var ShortDoc = Backbone.Model.extend({});
var shortDoc = new Doc({ 
  id: id,
  title: docTitle 
});
var DocList = Backbone.Collection.extend({
  model: shortDoc
});

...ここで、shortDocには、リストを生成するために必要なプロパティのみが含まれています。

または、ドキュメントモデル全体でコレクションを使用することをお勧めしますか?

(事前に)あなたの助けに感謝します

4

2 に答える 2

4

Backbone.View同じモデルに対して複数の を記述できることに注意してください。DetailViewドキュメント全体を表示する を作成することもできますが、リスト ビューのように各ドキュメントの重要な部分を紹介する を自由に作成することもできますItemViewDetailView台所の流し台を含める予定ですが、ItemViewタイトルを誇示することに限定される可能性があります。

var MyItemView = Backbone.View.extend({
  tagName: 'li',
  render: function () {
    this.$el.html('<h3>' + this.model.get('title') + '</h3>');
    return this;
  }
});

最後に、気になるのがデータの量である場合: 多くのバックボーン アプリケーションは、アプリケーションで使用されるモデルの種類ごとにコレクションを保持することを選択します。それらの状態はどこかで維持する必要があります。きちんと整理されたリストにしないのはなぜですか?アプリケーションのロード時にすべてのモデル属性をブートストラップする必要はありません。代わりに、タイトル (または最初のリストをレンダリングするために必要なもの) をロードし、ユーザーが詳細を要求するまでモデルのフェッチを延期することを選択できます。

于 2012-12-02T21:46:34.660 に答える
0

質問のタイトルには、3 つの異なる概念 (クラス、インスタンス、およびデータの表示) があります。

定義は次のようになります。

var Doc = Backbone.Model.extend({});
var DocList = Backbone.Collection.extend({
    url: '/docs',
    model: Doc
});

デフォルトがない場合、実行のこの段階ではデータはありません。次に、クライアント側で作成することにより、データの完全なセット (またはその一部のみ) を持つことができるモデルをコレクションに入力し始めます。

var myDocList = new DocList();
myDocList.create({title: 'The first doc'}); 
/* no need for an id here if you're using centralized persistence, because 
"create" calls "save" witch in turn does an http post to your server which 
should return a JSON representation of your model including its id (Backbone 
will include it in your model). */

またはそれらをサーバー側で読む:

var myDocList = new DocList();
myDocList.fetch();
/* Backbone will do an http get at DocList.url and create Doc instances with the
   JSON array it should receive from your server*/

docList の表現に関しては、それが長いか複雑な HTML である場合、アイテムを新しく作成した要素に追加してから、この要素をドキュメントに追加する必要があります。各アイテムを再描画するよりも約 10 倍高速です。 .

于 2012-12-04T07:32:39.953 に答える