Задать вопрос

Почему не работе 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 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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) {
    // какая-то логика работы с моделью
});
Ответ написан
Ваш ответ на вопрос

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

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