Marionette.ItemView
用于没有model
与之关联的特定属性的视图类是否常规?
由于Marionette.View
不打算直接使用,它ItemView
作为一个具有方便的默认值和绑定的视图类似乎是有意义的。
或者,应该只求助于 usingBackbone.View
吗?如果是这样,有没有办法与Backbone.View
Marionette 的事件和垃圾收集架构挂钩?
谢谢你的澄清!
Marionette.ItemView
用于没有model
与之关联的特定属性的视图类是否常规?
由于Marionette.View
不打算直接使用,它ItemView
作为一个具有方便的默认值和绑定的视图类似乎是有意义的。
或者,应该只求助于 usingBackbone.View
吗?如果是这样,有没有办法与Backbone.View
Marionette 的事件和垃圾收集架构挂钩?
谢谢你的澄清!
ItemView 可以在没有模型的情况下使用。我经常这样做。
如果您需要为 ItemView 指定数据,但 Backbone.Model 中没有该数据,则需要重写该serializeData
方法:
MyView = Marionette.ItemView.extend({
serializeData: function(){
return {
my: "custom data"
};
}
});
基本的 Marionette.View 并不意味着直接使用,因为它本身不提供渲染功能。不过,这并不意味着您不能使用它来创建自己的基本视图类型。例如,您可以为您的应用程序构建一个视图类型,以处理渲染谷歌地图或第三方小部件或其他不需要 ItemView 具有的基于 Backbone.Model 的一般渲染的东西。
我刚刚发现您可以为此使用 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 的看法感兴趣吗?