什么参数todo进入todo.js

时间:2013-01-18 07:53:41

标签: backbone.js underscore.js

在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); 
 }

第一个函数是将它作为模型传递给其他视图。我想我在这里缺少一些基本的东西。请说清楚。如果需要更多代码,请告诉我。

1 个答案:

答案 0 :(得分:1)

我使用此待办事项列表作为参考:http://backbonejs.org/examples/todos/todos.js

简短回答todo中的addOne: function(todo){是指Todos系列中的单个Todo模型。

更长的答案

让我们稍微打破一下。

  Todos.each(this.addOne, this);

此处TodosCollection 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。