在backbone todo应用程序中,有一个这样的函数:
addOne: function(todo){
var view=new app.TodoView({model:todo});
$("#todo-list").append(view.render().el);
}
我不明白'todo'参数在上面的函数中得到了什么?
此功能由另一个功能调用:
addAll: function(){
this.$("#todo-list").html('');
app.Todos.each(this.addOne,this);
}
第一个函数是将它作为模型传递给其他视图。我想我在这里缺少一些基本的东西。请说清楚。如果需要更多代码,请告诉我。
答案 0 :(得分:1)
我使用此待办事项列表作为参考:http://backbonejs.org/examples/todos/todos.js
简短回答:todo
中的addOne: function(todo){
是指Todos系列中的单个Todo模型。
更长的答案:
让我们稍微打破一下。
Todos.each(this.addOne, this);
此处Todos
是Collection
Todo
的{{1}}。此代码在集合上进行迭代,集合中的每个Models
模型都作为Todo
传递到addOne
函数中。
它还将todo
函数中的上下文(或this
值)设置为当前addOne
(指this
)。如果他们没有这样做,那么App
函数中的this
将引用集合中的当前模型(addOne
)
todo
在// Add a single todo item to the list by creating a view for it, and
// appending its element to the `<ul>`.
addOne: function(todo) { // todo refers to a single model in the collection
var view = new TodoView({model: todo}); // create a new TodoView with the todo model
this.$("#todo-list").append(view.render().el); //<- 'this' refers to 'App'. append the newly created view into the DOM, hence displaying it.
},
函数中,我们创建一个新的addOne
并将其附加到要显示的DOM。