12

有没有办法在木偶复合视图模板中获取参数?我认为无论我用什么参数初始化视图都可以在模板中使用,但它似乎不起作用。

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是未定义的:

4

3 回答 3

18

您可以为此使用 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
            }
        }
    });
于 2013-11-11T15:58:38.383 回答
6

在 freenode 聊天室中从 brian-mann 那里得到了一些帮助来解决这个问题。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...
});
于 2013-01-18T20:51:19.900 回答
-3

您可以设置视图“模型:{isMine:true}”的模型属性

于 2013-01-19T12:17:33.567 回答