2013-03-06 2 views
0

Я новичок в Backbone. Простите меня, если об этом ответили раньше. Я попробовал поиск в Интернете, но не смог найти решение.Backbone Fetch запускает успех, но возвращает нулевую длину

window.InfoCollection = Backbone.Collection.extend({ 
    model:InfoModel, 
    url:"../api/info", 
     parse: function (response) { 
     console.log("In Parse" + response.length) 
     return response; 
    } 
}); 

Вот это возвращает длину правильно, так как 1

Однако он показывает, как 0 здесь.

this.InfoCollection.fetch({success:function(){console.log(this.length)}}); 

Следовательно, когда я запускаю представление с помощью InfoModel, он терпит неудачу.

Может ли любой эксперт указать мне в правильном направлении?

+0

Благодарим за редактирование, Колин – mvinayakam

ответ

0

От fine manual:

синтаксического анализаcollection.parse(response, options)

[...] Функция передается необработанный response объект и должен возвращать массив атрибутов модели, которые будут добавлены в коллекцию ,

Видимо вы получаете ожидаемый массив (длина одного) в response, но тогда ваш parse возвращает только первый элемент:

return response[0]; 

Но коллекция ожидает массива объектов (один объект на модель) не один объект. В результате вы получаете пустую коллекцию, потому что вы не дали ей ничего, что могло бы загрузить; пустые коллекции имеют длину, равную нулю, и это то, что вы видите.

Вы, вероятно, хотите, чтобы ваш parse выглядеть следующим образом:

parse: function (response) { 
    console.log("In Parse" + response.length) 
    return response; 
} 

Вот только реализация по умолчанию parse с console.log вызов, брошенный в так что вы, вероятно, не нужно все это.

+0

Прошу прощения за то, что не упоминал об этом. Однако я сначала попробовал это с ответом. Firebug показал мне детей Response, поэтому я попытался отправить только первого ребенка – mvinayakam

+0

Как выглядит «ответ»? –

+0

Он выглядит как обычный объект массива. ответ [0] [infoId], ответ [0] [firstvar] и т. д. и т. д. – mvinayakam

Смежные вопросы