Marionette.ItemView用于没有model与之关联的特定属性的视图类是否常规?
由于Marionette.View不打算直接使用,它ItemView作为一个具有方便的默认值和绑定的视图类似乎是有意义的。
或者,应该只求助于 usingBackbone.View吗?如果是这样,有没有办法与Backbone.ViewMarionette 的事件和垃圾收集架构挂钩?
谢谢你的澄清!
Marionette.ItemView用于没有model与之关联的特定属性的视图类是否常规?
由于Marionette.View不打算直接使用,它ItemView作为一个具有方便的默认值和绑定的视图类似乎是有意义的。
或者,应该只求助于 usingBackbone.View吗?如果是这样,有没有办法与Backbone.ViewMarionette 的事件和垃圾收集架构挂钩?
谢谢你的澄清!
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 的看法感兴趣吗?