2013-06-07 1 views
2

У меня есть CompositeView, где я беру его коллекцию при инициализации.Магистральная магистраль: не отображать составной вид, если коллекция пуста

initialize: function() { 
    this.collection = this.model.things; 
    this.collection.fetch(); 
    }, 

Как я не сделать этот композиционный вид, если его коллекция пуста?

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

ответ

4

Ответ оказался результатом рендеринга композитного представления после возврата отложенного объекта fetch.

initialize: function() { 
    var self = this; 
    this.collection = this.model.localFoods; 
    this.collection.fetch().then(function() { 
    self.render(); 
    }); 
} 

Текущий счет

асинхронной: 23, я: 0

выигрывает Асинхронный!

+0

у меня такая же Prob Лем. Вместо того, чтобы выбирать, я проверяю размер коллекции и только визуализую, если она> 1. Но она получает визуализацию независимо от того, вызываю ли я render() или нет. И также жалуется, что объект не имеет метода, когда я использую self. (Я использовал это). Любая помощь там? –

0

От Docs:

Когда «сброс» событие коллеого уволят, то это будет только вновь сделать свою коллекцию в композите, а не шаблон обертки

Так проходит {reset: true} к fetch(), поэтому коллекция будет автоматически повторно вынесено:

initialize: function() { 
    this.collection = this.model.things; 
    this.collection.fetch({reset: true}); 
}