2012-08-29 60 views
0

在addOne(待)我無法理解的參數被引用從什麼:Todo.js中引用的「todo」參數是什麼(Backbone.js教程)?

在APPVIEW:

initialize: function(){ 
    Todos.bind('add', this.addOne, this); //So "this" keyword is being passed, which refers to AppView itself 
    //More code here 
}, 

然後在addOne功能,

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

見這裏註釋的源代碼:http://backbonejs.org/docs/todos.html

那麼AppView是不是被傳入addOne(todo)?不應該將模型傳遞給模型:在addOne()中todo?

由於

回答

0

該真實被作爲第三個參數來綁定函數傳遞的this用於該函數的context綁定到當前context,其不被作爲參數傳遞。在引擎蓋下使用underscore.js's_bind()

編輯: 我覺得有什麼讓人困惑的是,在addOne方法被調用的地方並不明顯。基本上addevent是當一個新的項目被添加到集合時被觸發,你可以綁定到這個事件,主幹會將新添加的模型傳遞給綁定到這個eventmethod(所以在這種情況下addOne方法是綁定到這個事件和待辦事項是新模型)。在此示例中觸發add事件的是什麼時候通過AppView的createOnEnter方法中的Todos.create({title: this.input.val()});創建新的待辦事項。

+0

對。我知道綁定將「this」作爲參數傳遞給AddOne(),但不會導致錯誤,因爲它指的是AppView,而不是Todo模型? – Sean

+0

哦!所以「這」實際上是指「Todos」而不是視圖? – Sean

+0

不完全是,它指的是當前的上下文,在這種情況下是「AppView」,這種方式在addOne方法中使用「this」時,它指的是與綁定時相同的「this」 「this」將指向「窗口」)。 – Jack

相關問題