Почему не работе eahe для коллекции?

Почему не срабатывает метод each для коллекции, это ведь просто объект??? это возможно бесполезно но все же почему не срабатывает, брееед....
var col1 = new Backbone.Collection()

	col1.add([{name: 'Ivan', age: 24},{name: 'Alex', age: 22}])
	console.log( col1 ) // Почему выводится коллекция содержащийся модели которые добавил на следующей строчки?
	col1.set([{name: 'Djon', age: 21},{name: 'Tom', age: 32},{name: 'Roman', age: 19}])

	console.log( '=====================================' )

	_.each(col1, function(val, key){
		console.log( key, val )  
	})
       //Выводит:
       //undefined 0 
       //undefined 1 
       //undefined 2
  • Вопрос задан
  • 2278 просмотров
Пригласить эксперта
Ответы на вопрос 1
aen
@aen
Keep calm and 'use strict';
Метод each итерирует объект по его свойствам, либо массив по элементам. В вашем случае итерирование происходит по объекту. Вот только модели коллекции лежать в свойстве models вашей коллекции. Потому итерируйте по нему. То есть:
_.each(col1.models, function(val, key){
    console.log( key, val )  
  })

Для удобства работы можно создать свой "класс" коллекций и расширить его методом each:
var Collection = Backbone.Collection.extend({
  each: function (fn) {
    _.each(this.models, fn);
  }
});

var myColl = new Collection();

// Итерирование
myColl.each(function(model) {
    // какая-то логика работы с моделью
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы