1

サンプルアプリを使用してBackbone.jsに関するいくつかの記事を読みましたが、ビュー内のウィジェットがクリックされたときにBackboneがどのように認識し、どのモデルにバインドされているかについての説明や例が見つかりません。

IDの内部割り当てなどで処理されていますか?

たとえば、id = "123"のdivを削除する場合は、jQueryまたはjavascript関数を使用してDOMから削除できます。バックボーンでは、このdivはIDがなくてもかまいませんが、知らないうちに削除される可能性があります。

誰かが良い記事を知っているか、それについての私の理解を向上させることができれば、それは素晴らしいことです。

4

3 に答える 3

1

ビューがバインドされているモデルを「認識する」方法は、以下に示す_configureメソッドを介して行われます。

_configure: function(options) {
  if (this.options) options = _.extend({}, this.options, options);
  for (var i = 0, l = viewOptions.length; i < l; i++) {
    var attr = viewOptions[i];
    if (options[attr]) this[attr] = options[attr];
  }
  this.options = options;
}

注意すべきインポートブロックは次のとおりです。

for (var i = 0, l = viewOptions.length; i < l; i++) {
    var attr = viewOptions[i];
    if (options[attr]) this[attr] = options[attr];
}

viewOptionsは、ビューにとって「特別な」意味を持つキーの配列です。配列は次のとおりです。

var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName'];

このループは、ビューとモデル、またはビューとコレクションの間の「接着剤」です。それらがオプションに存在する場合、それらは自動的に割り当てられます。

これはすべて、注釈付きのソースコードにあります。

于 2012-07-12T00:41:16.337 に答える
0

http://www.joezimjs.com/javascript/introduction-to-backbone-js-part-1-models-video-tutorial/を確認してください。

複雑に見えても、学ぶことはほとんどありません。私を信じてください。

もっと具体的に質問すれば、私は助けようとすることができます。

于 2012-07-11T18:18:07.833 に答える
0

ソースを読むことは、おそらくあなたの理解を向上させるためのあなたの最善の策です。確認したいバックボーン関数はdelegateEventsと呼ばれます。ただし、短いバージョンでは、jQueryのdelegate()関数を使用します。ルート要素はビューの要素(elプロパティ)であり、指定したセレクターによってフィルター処理されます。

jQueryは、実際には、リッスンしている各要素にハンドラーをバインドしません。代わりに、イベントをルート要素にバブルアップさせ、そこでイベントを検査します。個々の要素には何も添付されていないため、問題なく自由に削除できます。ただし、ビューの要素を削除するいくつかの方法(たとえば、親要素にinnerHTMLを設定することによる)は、メモリリークを引き起こす可能性があります。私はそれについて100%確信していませんが、とにかくそれをしないのがおそらく最善です。

于 2012-07-11T22:02:27.227 に答える