0

在主干待办事项应用程序中,有一个这样的功能:

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

第一个功能是将其作为模型传递给其他视图。我想我在这里缺少一些基本的东西。请阐明一些观点。让我知道是否需要更多代码。

4

1 回答 1

1

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

简短的回答:todoinaddOne: function(todo){指的是 Todos 集合中的单个 Todo 模型。

更长的答案

让我们分解一下。

  Todos.each(this.addOne, this);

Todos是一个CollectionTodo Models此代码正在遍历集合,集合Todo中的每个模型都 addOne作为todo. 它还将函数this内的上下文(或值)设置addOne为当前this(指的是App)。如果他们不这样做,那么函数thisaddOne将引用集合中的当前模型 ( 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函数中,我们创建一个新的TodoView并将其附加到要显示的 DOM 中。

于 2013-01-18T09:14:11.700 回答