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

Почему не работе 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
  • Вопрос задан
  • 2279 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Графический дизайнер PRO
    15 месяцев
    Далее
  • Нетология
    Фронтенд-разработчик
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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) {
    // какая-то логика работы с моделью
});
Ответ написан
Ваш ответ на вопрос

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

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