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_.each(list, iterator, [context]) ,迭代一个元素列表,依次产生每个元素到一个迭代器函数。

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

谢谢

4

2 回答 2

2

从下划线文档你看到_.each如下

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

这里的list也可以对应model。

所以这可以写成

                       `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);
于 2013-05-15T04:07:39.683 回答
1

这个filterOne不是一个元素列表,请帮帮我。

下划线函数作为主干实例上的方法实现。所以你的

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

相当于

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

下划线的对象包装器

_(app.Todo.models).each(this.filterOne, this);
于 2013-05-15T02:52:29.257 回答