У меня есть приложение для марионетки/магии, которое отлично работает. Я хотел бы добавить дополнительный слой в наших представлениях:Вложенная марионетка LayoutView - синтаксическая модель
До:
TabLayoutView -> CompositeView
После:
TabLayoutView -> SectionLayoutView -> CompositeView
Но это не работает, и я не могу видеть, где проблема.
Вот код:
Модель вкладки:
TabModel = Backbone.Model.extend({
defaults: {
headerModel: {label: '', left: '', right: ''}
}
})
Шаблон закладки:
<div class="headerSection"></div>
Вид вкладки:
var TabLayoutView = Marionette.LayoutView.extend({
template: _.template(TabTemplate),
tagName: 'div',
regions: {
headerRegion: {selector: '.headerSection'}
},
onShow: function() {
this.headerRegion.show(new SectionLayoutView({model: this.model.get('headerModel')}));
}
});
модели раздела:
SectionModel = Backbone.Model.extend({
defaults: {
label: '',
left: '',
right: ''
}
});
Шаблон раздела:
<div class="section">
<div class="leftSection"/>
<div class="rightSection"/>
</div>
Вид раздела:
Ошибка я получаю:
Uncaught TypeError: Cannot read property 'apply' of undefined
в методе
serializeModel: function(model) {
return model.toJSON.apply(model, _.rest(arguments));
}
, срабатывающий в этой строке:
this.headerRegion.show(new SectionLayoutView({model: this.model.get('headerModel')}));
Не могли бы вы дать мне какие-либо идеи о том, что это не так? У нас есть аналогичный код в других местах, и он работает нормально. Похоже, что проблема с моделью синтаксиса json, но я не понимаю, почему.