2015-07-07 2 views
1

Я пытаюсь удалить .reset(), чтобы очистить мой collection, прежде чем звонить .fetch() на нем, чтобы получить новые данные для этой страницы.Магистраль: коллекция не сбрасывается

Но по какой-то причине мой collection не сбрасывается и не извлекает новые данные при переходе на другую страницу. Он только сбрасывает коллекцию и получает новые данные, когда я вручную перезагружаю страницу.

class ProjectPostItemsView extends Backbone.View 
    template: JST['project_post_items.ejs'] 
    posts_item_views: [] 

    initialize: -> 
    super() 
    @listenTo(@collection, 'add', @displayPostItem) 
    @collection.reset().fetch(add: true) 

    displayPostItem: (project) -> 
    view = new ProjectPostItemView(model: project) 
    @posts_item_views.push(view.on('render', => 
     @$('.post-items').append(view.$('>')))) 

    render: (options) -> 
    super(options) 

Я очень новичок в магистральной сети, поэтому не уверен, правильно ли я справляюсь с этим. Что я делаю не так?

Любая помощь приветствуется. Заранее спасибо!

ответ

3

Вместо вызова сброса, прежде чем ваш принести, лучший способ сделать это было бы использовать:

collection.fetch({reset: true}); 

согласно документации Backbonejs,
«Когда вернется модель данных с сервера, его использует набор (интеллектуально) объединить извлеченные модели, если вы не пройдете {reset: true}, и в этом случае коллекция будет (эффективно) сброшена. " http://backbonejs.org/#Collection-fetch

+0

О, конечно! Гораздо лучший ответ, чем мой. Хорошо сделано :) –

+0

Спасибо! Если вы так думаете, почему бы мне не дать и не поднять? :) – slinhart

+0

@slinhart Что относительно 'add: true', который уже передан методу' fetch() '? – realph

1

Функция reset коллекции не возвращает объект коллекции, поэтому вы не можете цепью reset и fetch. Измените последнюю строку функции initialize к двум линиям:

@collection.reset() 
@collection.fetch() 

примечание стороны: нет никаких причин, чтобы пройти {add: true} к fetch. Любые новые модели, входящие в коллекцию, автоматически запускают событие «добавить», которое вы слушаете.