Использование Marionette.ItemView для просмотра без моделей?

Можно ли использовать Marionette.ItemView для классов классов, у которых нет определенного свойства model, связанного с ними?

Поскольку Marionette.View не предназначен для непосредственного использования, кажется, что ItemView имеет смысл как класс вида с удобными по умолчанию и привязками.

Или, нужно ли прибегать к использованию Backbone.View? Если да, есть ли способ привязать Backbone.View к сборке Marionette и сборке мусора?

Спасибо за разъяснение!

Ответ 1

ItemView может использоваться без модели. Я делаю это довольно регулярно.

Если вам нужно указать данные для ItemView, но не иметь эти данные в Backbone.Model, вам необходимо переопределить метод serializeData:


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

база Marionette.View не предназначена для использования напрямую, потому что она не предоставляет функцию рендеринга на ней. Это не значит, что вы не можете использовать его для создания собственных типов базового вида. Например, вы можете создать тип представления для своего приложения, который занимается рендерингом карт google или стороннего виджета или чего-то еще, для которого не требуется общий рендеринг Backbone.Model, который имеет в нем ItemView.

Ответ 2

Я только что узнал, что вы можете использовать templateHelper для этого - просто запустите это в своем объявлении ItemView:

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

И затем в вашем шаблоне:

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

И затем, когда вы инициализируете представление:

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

Меня бы интересовали ваши мысли об этом Дерике?