在Todo.js(Backbone.js教程)中引用的“todo”参数是什么?

时间:2012-08-29 03:00:27

标签: backbone.js

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

由于

1 个答案:

答案 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创建了新的待办事项。