Using Marionette.ItemView for views without models?

后端 未结 2 1713
长发绾君心
长发绾君心 2021-02-04 13:29

Is it conventional to use Marionette.ItemView for view classes that do not have a specific model property associated with them?

As Mario

相关标签:
2条回答
  • 2021-02-04 13:36

    I just found out you can use a templateHelper for this - just chuck this in your ItemView declaration:

    templateHelpers: function() {
        return {
            message: this.message,
            cssClass: this.cssClass
        }
    }
    

    And then in your template:

    <script type="text/html" id="notice-template">
        <span class="<%= cssClass %>"><%= message %></span>
    </script>
    

    And then when you initialise the view:

    var noticeView = new App.Views.Notice();
    noticeView.message = "HELLO";
    App.noticeRegion.show(noticeView);
    

    I would be interested in your thoughts on this Derick?

    0 讨论(0)
  • 2021-02-04 13:37

    ItemView can be used without a model. I do this quite regularly.

    If you need to specify data for an ItemView, but not have that data in a Backbone.Model, you need to override the serializeData method:

    
    MyView = Marionette.ItemView.extend({
      serializeData: function(){
        return {
          my: "custom data"
        };
      }
    });
    

    the base Marionette.View isnt' meant to be used directly because it doesn't provide a render function on it's own. That doesn't mean you can't use it to create your own base view types, though. You could, for example, build a view type for your application that deals with rendering google maps or a third party widget or something else that doesn't need the general Backbone.Model based rendering that ItemView has in it.

    0 讨论(0)
提交回复
热议问题