使用Marionette.ItemView查看没有模型的视图?

时间:2012-12-02 22:46:19

标签: backbone.js marionette

对于没有与之关联的特定Marionette.ItemView属性的视图类,使用model是否常规?

由于Marionette.View并不意味着直接使用,因此ItemView似乎有意义作为具有方便的默认值和绑定的视图类。

或者,是否应该使用Backbone.View?如果是这样,有没有办法将Backbone.View挂钩到Marionette的垃圾和垃圾收集架构中?

感谢您的澄清!

2 个答案:

答案 0 :(得分:18)

可以在没有模型的情况下使用ItemView。我经常这样做。

如果您需要为ItemView指定数据,但在Backbone.Model中没有该数据,则需要覆盖serializeData方法:


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

基地Marionette.View不是'意思是直接使用,因为它没有提供它自己的渲染功能。但这并不意味着您无法使用它来创建自己的基本视图类型。例如,您可以为您的应用程序构建一个视图类型,用于处理渲染谷歌地图或第三方小部件或其他不需要ItemView所具有的基于Backbone.Model的一般渲染的其他内容。

答案 1 :(得分:1)

我刚刚发现你可以使用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);

我对你对Derick的想法感兴趣吗?