0

addOne(todo) では、パラメーターが何から参照されているのか理解できません。

AppView で:

initialize: function(){
    Todos.bind('add', this.addOne, this);  //So "this" keyword is being passed, which refers to AppView itself
    //More code here
},

次にaddOne関数で、

addOne: function(todo) {
    var view = new TodoView({model: todo});
    this.$("#todo-list").append(view.render().el);
},

ここで注釈付きのソースを参照してください: http://backbonejs.org/docs/todos.html

AppView が addOne(todo) に渡されていませんか? モデルをモデルに渡すべきではありませんか? todo in addOne()?

ありがとう

4

1 に答える 1

0

バインド関数に3番目のパラメーターとして渡されているものは、関数のを現在thisのにバインドするために使用されますが、パラメーターとして渡されることはありません。内部的には、バインドはunderscore.jsのを使用します。contextcontext _bind()

編集:あなたを混乱させているのは、addOneメソッドがどこで呼び出されているのかが明確でないことだと思います。基本的に、add eventは新しいアイテムがコレクションに追加されたときに発生します。このイベントにバインドでき、バックボーンはこれにバインドされたモデルに新しく追加されたモデルを渡しmethodますevent(この場合、addOneメソッドはこのイベントにバインドされ、 todoは新しいモデルです)。addこの例でイベントをトリガーしているのTodos.create({title: this.input.val()});は、AppViewのcreateOnEnterメソッドで新しいToDoが作成されたときです。

于 2012-08-29T03:04:12.533 に答える