0

在 addOne(todo) 中,我无法理解引用的参数是什么:

在应用视图中:

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 吗?

谢谢

4

1 回答 1

0

this作为第三个参数传递给 bind 函数的that 用于将函数的 绑定context到 current context,它不作为参数传递。在引擎盖下绑定使用underscore.js 的 _bind()

编辑:我认为让您感到困惑的是,调用该addOne方法的位置并不明显。基本上,add event当将新项目添加到集合中时会触发 ,您可以绑定到此事件,并且主干会将新添加的模型传递给绑定到 this 的模型methodevent因此在这种情况下,addOne方法绑定到此事件并且todo 是新模型)。本例中触发add事件的原因是通过Todos.create({title: this.input.val()});AppView 的createOnEnter方法创建了一个新的待办事项。

于 2012-08-29T03:04:12.533 回答