Шаблон 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