2013-01-18 42 views
0

在骨幹待辦事項應用進行了,有這樣的功能:什麼參數的待辦事項中todo.js

addOne: function(todo){ 
var view=new app.TodoView({model:todo}); 
$("#todo-list").append(view.render().el); 
} 

我不明白什麼是「待辦事項」的說法在收到上述功能?

該函數由另一個函數調用:

addAll: function(){ 
this.$("#todo-list").html(''); 
app.Todos.each(this.addOne,this); 
} 

第一功能被傳遞它作爲模型以一些其他視圖。我想我在這裏缺乏基本的東西。請說明一下。讓我知道是否需要更多的代碼。

回答

1

我用這待辦事項列表供參考:http://backbonejs.org/examples/todos/todos.js

簡短的回答:在addOne: function(todo){todo是指從託多斯收集單一的Todo模型。

再回應

讓我們打破這一點。

Todos.each(this.addOne, this); 

這裏TodosTodoModels一個Collection。此代碼正在迭代整個集合,並且集合中的每個Todo模型都將作爲todo傳遞到addOne函數。 它還將addOne函數中的上下文(或this值)設置爲當前的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是顯示。

+0

所以當我們發送「this」作爲第二個參數時,這意味着我們正在將當前模型發送到addOne函數。我對麼? – beNerd

+0

不完全。 「每個」函數基本上都是這樣說的,「因爲我的第一個參數給了我一個函數,對於這個函數我會傳入一個模型,而且我會爲每個模型都做這個。」第二個「這個」與此無關。我知道它有點令人困惑:/ – hajpoj

+0

是的。但是希望我的基本面能夠被像你這樣的有經驗的人清除。所以:「爲了這個功能,我要通過一個模型。」它隱含地完成了嗎?如果不是,這段代碼說的是什麼? – beNerd