0

Backbone.js の Todo サンプル アプリについて理解しようとしています。

ほとんどのことは理解できましたが、理解できない部分があり、誰かが説明してくれることを望んでいました。

https://github.com/jeromegn/localtodos/blob/master/javascripts/todos.jsを見る

162 行目: 関数内の "todo" パラメーターはどのようにここに到達しますか? どのように送信されたのか、どこから送信されたのかわかりません。

どんな助けでも大歓迎です。はい、このサイトでどのように機能するかがわかりました。

ありがとう

4

2 に答える 2

2

一部のコードがその関数'addOne'を呼び出す場合、'addOne'関数内に'todo'という名前のパラメーターを1つ指定する必要があります。上記の「bind」に気付いた場合は、「addOne」も「add」イベントに対して呼び出されます。以下を見ると、「addAll」が表示されます。ここで、「each」は「addOne」を呼び出すたびに1つの要素を提供します。

于 2013-01-21T16:03:49.680 に答える
2

メソッドのAppView.initialize146 行目で、コレクションの add イベントのaddOneイベント ハンドラとしてメソッドが登録されます。Todos

Todos.bind('add', this.addOne);

項目がコレクションに追加されると、Backbone はaddイベントをトリガーし、追加されたモデルを最初の引数としてイベント ハンドラーに渡します。

組み込みイベントのリストによると、addイベント ハンドラー メソッドには次の引数が渡されます。

"add" (model, collection, options) — when a model is added to a collection.

つまり、addOneメソッドはさらに 2 つの引数を受け取ることもできます。

addOne: function(todo, todoscollection, options) {
    console.log(todo); // -> the model which was added
    console.log(todoscollection); // -> the collection, to which the model was added
    console.log(options); // -> the original options argument passed to collection.add
}

しかし、Javascript では完全な引数リストを宣言する必要がないため、サンプルの作成者は最初の引数のみを「受け取る」ことを選択しました。

于 2013-01-21T16:06:33.530 に答える