Подтвердить что ты не робот

Как передать параметр в базовый шаблон марионеточного марионетки

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

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:

4b9b3361

Ответ 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} '