在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)?不应该将模型传递给模型:addOne()中的todo?
由于
答案 0 :(得分:0)
作为第三个参数传递给绑定函数的this
用于将函数的context
绑定到当前context
,它未被传递作为参数。引擎盖绑定使用underscore.js's _bind()
。
编辑:
我认为令你感到困惑的是,调用addOne
方法的地方并不明显。基本上,当将新项添加到集合时会触发add
event
,您可以绑定到此事件,并且主干会将新添加的模型传递给绑定的method
到这个event
(所以在这种情况下,addOne
方法绑定到此事件,而todo是新模型)。在此示例中触发add
事件的原因是,通过AppView的Todos.create({title: this.input.val()});
方法中的createOnEnter
创建了新的待办事项。