0

私が見ているバックボーンアプリ(複数のモデルがある)のビュー(ビューA)の1つでは、イニシャライザにこの行があります

  this.model.bind('change', this.setText, this);

別のビュー (ビュー B) では、初期化子にこの行があります

this.model.bind('change', this.render, this);

ただし、どちらのビューでも、接続されているモデルを示す場所はありません。つまり、何が何であるかについての宣言はありません'model''change'たとえば、をトリガーするモデルはthis.setText、ビュー A とビュー B で (同時に) トリガーするということthis.renderですか?

4

1 に答える 1

4

細かいマニュアルから:

コンストラクター/初期化 new View([options])

[...] 渡された場合、ビューに直接アタッチされる特別なオプションがいくつかあります: modelcollectionelid、および。classNametagNameattributes

したがって、これでビューをインスタンス化すると:

var v = new SomeView({ model: m });

バックボーンは自動的に内部に設定this.modelmv、これはinitializeが呼び出される前に行われます。bindそれらの呼び出しを持つビューのコンストラクター呼び出しを探しmodelます。ビューがインスタンス化されると、提供された が表示されます。

'change'たとえば、をトリガーするモデルはthis.setText、ビュー A とビュー B で (同時に)トリガーするということthis.renderですか?

いいえ、各ビュー (この場合) には、ビューがインスタンス化されるときに提供される独自のモデルがあり、イベントはそのモデルのみから発生します。

于 2012-04-15T21:32:06.123 に答える