У меня есть Backbone.PageableCollection (@customers
), модели которых я бы хотел пропустить. Я пробовал много вещей - в том числе то, что я думал, что было очевидно:Итерация через опорную площадку. Невозможно выполнить сборку
@customers.each (customer) ->
console.log customer
К сожалению, это выходит из-то, что выглядит как коллекция, но имеет никаких данных модели в ней. Я знаю, что коллекция была полностью синхронизирована, потому что, когда я выйти из @customers.models
я могу видеть массив модели данных:
Как ни странно, если бы я это сделать:
_.each @customers.models, (customer) ->
console.log customer
Я получаю тот же самый бесполезный результат, как указано выше.
Что мне не хватает?
Update:
Приглядевшись на объекте, регистрируемые console.log customer
в обоих подходах, это выглядит, как модель с безлюдных атрибутами. Это странно, поскольку в журнале @customers.models
показан массив моделей с полностью заполненными атрибутами. Кроме того, цикл each
выполняется один раз.
Update 2:
Я попробовал следующее за предложением agconti в поле ниже:
@customers.each (@customers, c) ->
console.log @customers, c
который компилирует:
return this.customers.each((function(_this) {
return function(customers, c) {
_this.customers = customers;
return console.log(_this.customer, c);
};
})(this));
и журналы undefined
и 0
.
Update 3:
Если я установил:
window.customers = @customers
, а затем введите его в консоли:
_.each(customers.models, function (customer) { return console.log(customer)});
Я получаю журнал всех моделей клиентов. Я действительно путает сейчас ...
Update 4:
Я сузил это вниз к вопросу синхронизации. Я запускаю этот код после синхронизации коллекции, но похоже, что разбор модели в коллекции происходит позже.
Что такое возврат, когда вы регистрируете '@ клиентов'? – agconti
'undefined' ...... – Erik
Я также обновил обновление 2. Этот синтаксис не имеет для меня никакого смысла. Я все еще ожидал бы, что работаю '@customers.each (клиент) -> клиент console.log. – Erik