10

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

由于Marionette.View不打算直接使用,它ItemView作为一个具有方便的默认值和绑定的视图类似乎是有意义的。

或者,应该只求助于 usingBackbone.View吗?如果是这样,有没有办法与Backbone.ViewMarionette 的事件和垃圾收集架构挂钩?

谢谢你的澄清!

4

2 回答 2

18

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

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


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

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

于 2012-12-03T15:49:41.067 回答
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 的看法感兴趣吗?

于 2012-12-05T13:39:30.223 回答