0

ドキュメントと組み合わせて、他の誰かの Backbone アプリから Backbone を学ぼうとしています。ドキュメントから理解できないことについて、私が理解していないことが2つあります。誰かが説明できることを願っています...

アプリ の概要 会社名をボックスにドラッグ&ドロップできるアプリです。

このアプリには、会社ビュー、会社モデル、および会社コレクションがあります。

また、バケット ビュー、バケット モデル、およびバケット コレクションも備えています。

また、どのモデルにも関連付けられていない一般的なアプリ ビューもあります。

問題...

まず、ビューがレンダリングされないのは変ですか?

アプリ ビューは次のようにインスタンス化されます

window.App = new AppView();

そして、アプリでさまざまなことを行います(バケットに会社名などを入力し、いくつかのイベントを設定します)。ただし、App View はレンダリングされません。一方、バケット ビューと会社ビューはどちらも、コード内の異なるポイントでレンダリングされます。例えば、

  var view = new BucketView({model: bucket});
  this.$("#bucket-list").append(view.render().el);

しかし、その App View は決してありません。この App View にもレンダリング機能はありません。レンダリングされないビューがあるのは奇妙ですか? そのコードは別の場所にあるべきですか?

2番目elに、アプリビューがレンダリングされないことを考慮して、デフォルト設定をレイアウトのメインコンテナdivの名前に変更する必要がある理由はありますか? たとえば、アプリビューでは、これを行います...

el: $("#mainapp"),

ただし、このビューがレンダリングされない場合、デフォルト設定を変更する理由はありますelか?

4

1 に答える 1

2

Backbone.View インスタンスを通常どおり作成すると、すぐelにビュー上に が生成されます。これは、ビューが管理するすべての HTML のプレースホルダーとして使用されelます。既に述べたように、通常は render メソッドでビューに HTML を設定します。

ただし、まったく新しい HTML 要素のセットをレンダリングしたくない場合もあります。代わりに、すでに DOM の一部になっている既存の HTML を管理する必要があります。この場合、行elで示したように、コンストラクターで を指定することにより、バックボーン ビューを既存の DOM 要素に簡単にアタッチできますel: $("#mainapp")

バックボーン ビューが既に を持っていることを確認するとel、独自の を生成しません。代わりに、渡されたものを使用します。

したがって、2つの質問に直接答えるには:

1) まず、ビューがレンダリングされないのは変ですか?

いいえ、なぜなら...

2) このビューがレンダリングされない場合、el のデフォルト設定を変更する理由はありますか?

質問は、直接答えることのできない方法でわずかにずれています。実際には、コンストラクターの呼び出しで を設定しているため、ビューがレンダリングされることはありません。el

于 2012-04-17T02:45:35.467 に答える