对于没有与之关联的特定Marionette.ItemView
属性的视图类,使用model
是否常规?
由于Marionette.View
并不意味着直接使用,因此ItemView
似乎有意义作为具有方便的默认值和绑定的视图类。
或者,是否应该使用Backbone.View
?如果是这样,有没有办法将Backbone.View
挂钩到Marionette的垃圾和垃圾收集架构中?
感谢您的澄清!
答案 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的想法感兴趣吗?