有谁能帮我分析这些代码骨干的各个功能意义?

时间:2013-05-15 02:35:50

标签: javascript backbone.js underscore.js

现在,我们可以假设app.Todos是一个集合。然后假设我们触发了filterAll函数。

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


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

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

在我阅读了关于每个的下划线文档后,他们说each_.each(list,iterator,[context]),迭代一个元素列表,然后依次产生一个迭代器函数。

但是filterAll函数使用每个函数迭代一个函数this.filterOne?那是什么意思?这个filterOne不是列表元素,请帮帮我。

由于

2 个答案:

答案 0 :(得分:2)

从Underscore文档中,您可以看到_.each如下

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

此处列表也可以对应模型。

所以这可以写成

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

                                      **OR**

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

所以这相当于

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

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

答案 1 :(得分: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);