在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()中的model: todo中吗?
谢谢
发布于 2012-08-29 03:04:13
作为第三个参数传递给绑定函数的this
用于将函数的context
绑定到当前context
,而不是作为参数传递。在幕后,bind使用underscore.js's _bind()
。
编辑:我认为让您困惑的是,addOne
方法在哪里被调用并不明显。基本上,当一个新的项目被添加到集合中时,add
event
就会被触发,你可以绑定到这个事件,backbone会将新添加的模型传递给绑定到这个method
的event
(所以在这种情况下,addOne
方法被绑定到这个事件,todo就是新的模型)。在本例中,触发add
事件的是通过AppView的createOnEnter
方法中的Todos.create({title: this.input.val()});
创建新的todo时。
https://stackoverflow.com/questions/12170324
复制相似问题