2013-05-15 18 views
1

現在,我們可以假設app.Todos是一個集合。然後假設我們已經觸發了filterAll函數。 有人可以幫我分析一下這些代碼骨幹的每個函數的含義嗎?

filterOne : function (todo) { 
    console.log(todo); 
    todo.trigger('visible'); 
}, 


filterAll : function() { 
    console.log(app.Todos); 
    app.Todos.each(this.filterOne, this); 
}, 

我讀關於每個下劃線文檔後,他們說each_.each(列表中,迭代器,[上下文]),在迭代元素的列表,得到每個依次迭代器功能。

但filterAll函數使用每個迭代函數this.filterOne?那是什麼意思?這個filterOne不是一個列表中的一個元素,請幫助我。

感謝

回答

1

這filterOne不是列表的元素,請幫助我。

下劃線功能在骨幹實例上實現爲方法。所以,你的

app.Todos.each(this.filterOne, this); 

相當於

_.each(app.Todo.models, this.filterOne, this); 

underscore's object wrapper

_(app.Todo.models).each(this.filterOne, this); 
+0

感謝您的評論,即強調功能上的骨幹方法實例 – poseid

+0

糟糕,我實際上忘了'.models' pro訪問列表 – Bergi

2

從下劃線文件你看到_.each如下

_.each(list, iterator, [context]) 

此爲L ist也可以對應於模型。

因此,這可以寫成

     `app.Todos.each(function() { } , this);` 

             **OR** 

         _.each(app.Todos.models, function() { } , this); 

所以這相當於

app.Todos.each(function(todo) { 
    console.log(todo); 
    todo.trigger('visible'); 
}, this); 

OR

_.each(app.Todos.models, function(todo) { 
     console.log(todo); 
     todo.trigger('visible'); 
}, this); 
相關問題