Шаблон Backbone.Marionette CollectionView "неопределенный"

Я работал над скринкастом BackboneRails Брайана Манна, поэтому структура моего приложения полностью соответствует им.

Нижеследующее определяет часть "show" приложения Marionette HomepageApp.

My.module('HomepageApp.Show', function(Show, App, Backbone, Marionette, $, _){

  Show.Photo = Marionette.ItemView.extend({
    tagName:'span'
  });

  Show.Photos = Marionette.CollectionView.extend({  
    template: 'homepage/show/templates/photos',

    itemView:Show.Photo,
    itemViewContainer: '#photos'
  });

  Show.Layout = Marionette.Layout.extend({
    template: 'homepage/show/templates/layout',
    regions:{
      photoRegion: '#photo-region'
    }
  });
});

Я также переопределяю функцию Marionette.Renderer.render следующим образом:

Backbone.Marionette.Renderer.render = function(template, data){
  var path = JST["backbone/apps/" + template];  

  try{
    if(!path) throw({message: "Template '" + template + "' not found!"}); 
    return path(data);
  }

  catch(err){
    console.log(err.message);
  }
}

Все мои взгляды, включая многие, не показанные здесь, работают отлично. Проблема заключается в том, что свойство 'Template' объекта View.Photos CollectionView отображается как 'undefined' в переопределении моего средства визуализации, что приводит меня к следующей ошибке:

Template 'undefined' not found!

Странно то, что это происходит даже тогда, когда я вообще не передаю значение для свойства шаблона.

Я также знаю, что я передаю ему действительную коллекцию Backbone при создании экземпляра.

Я полностью застрял. Кто-нибудь знаком с этим явлением?

1 ответ

У CollectionView не должно быть шаблона, для этого вам следует использовать CompositeView, как указано в документации:

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

Вы можете прочитать больше здесь: https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.compositeview.md

Другие вопросы по тегам