Как передать параметр в базовый шаблон марионеточного марионетки
Есть ли способ получить параметр в шаблон композитного представления марионетки? Я понял, что любые параметры, которые я инициализировал, будут доступны в шаблоне, но он, похоже, не работает.
Views.myView = Marionette.CompositeView.extend({
template: '#myView',
otherstuff...
});
var collection = new App.Collection();
App.main.show(new Views.myView({
collection: collection,
isMine: true
}));
шаблон:
<%= isMine %>
И при визуализации шаблона isMine
есть undefined:
Ответы
Ответ 1
Для этого вы можете использовать функцию templateHelpers. Например, у меня есть макет, который при рендеринге заполняет разные регионы.
onRender: function () {
var contactInfo = this.model.get('contactInfo');
this.contactInfoRegion.show(new ContactInfoView(
{
model: contactInfo,
travelerNumber: this.travelerNumber,
numberOfTravelers: this.numberOfTravelers
}
));
}
var ContactInfoView = Backbone.Marionette.ItemView.extend({
model: ContactInfoModel,
template: Backbone.Marionette.TemplateCache.get(contactInfoTemplate),
templateHelpers:function(){
return {
numberOfTravelers: this.options.numberOfTravelers,
travelerNumber: this.options.travelerNumber
}
}
});
Ответ 2
Получил некоторую помощь от brian-mann в чат-клубе freenode, чтобы понять это. Я передал значение в представление, но мне нужно отправить его как свойство для фактического шаблона, переопределив метод serializeData
.
Я также делаю проверку, чтобы установить значение по умолчанию как true, поэтому мне не нужно передавать значение, если я этого не хочу.
Views.myView = Marionette.CompositeView.extend({
template: '#myView',
serializeData: function() {
var viewData = {};
viewData.isMine = this.options.isMine === undefined ? true : this.options.isMine;
return viewData;
},
otherstuff...
});
Ответ 3
Вы можете установить свойство модели модели вида: {isMine: true} '