在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);
}第一个函数是将其作为模型传递给其他视图。我想我在这里缺少一些基本的东西。请放出一些光芒。如果需要更多代码,请让我知道。
发布于 2013-01-18 17:14:12
我使用这个待办事项列表作为参考:http://backbonejs.org/examples/todos/todos.js
Short answer:addOne: function(todo){中的Todo引用了Todo集合中的单个Todo模型。
较长的应答
让我们将其分解一下。
Todos.each(this.addOne, this);这里的Todos是Todo Models的Collection。这段代码遍历集合,集合中的每个Todo模型都作为todo传递给addOne函数。它还将addOne函数中的上下文(或this值)设置为当前this (引用App)。如果他们没有这样做,那么addOne函数中的this将引用集合中的当前模型(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中。
https://stackoverflow.com/questions/14394580
复制相似问题