在我的应用程序中,我发现实现FrameView
可以扩展LayoutView
,但是会有一些额外的逻辑来保留帧标题等,这很方便。(我的目标是让Region
处理显示标题的问题。)
从Java的Swing角度来看,LayoutView
对我来说是一个JPanel
,但我想把它变成一个JFrame
想要的人: - )
有没有办法以这种方式扩展Marionette视图(并执行一些初始化),initialize
方法仍未使用? (我不想打扰用户调用FrameView.prototype.initialize
方法来使事情有效)
这是我的尝试(但它遇到了上述问题):
var FrameView = Marionette.LayoutView.extend({
initialize: function() {
if(!this.title) this.title = null;
},
setTitle: function(title) {
this.title = title;
this.trigger("change:title", title);
}
})
理想情况下,FrameView
会将LayoutView
与Backbone.Model
结合起来(因此我会将setTitle
之类的方法视为理所当然,即使语法略有不同)。视图的Backbone.Model
部分会保留标题,图标等等。
我还在学习Backbone.js和Marionette,所以我的思维方式可能很奇怪。我会感谢您的答案和任何建议如何实现我的目标。
答案 0 :(得分:1)
如果您只想在视图对象上使用默认的title
键,请使用键扩展视图原型:
var FrameView = Marionette.LayoutView.extend({
title: null,
setTitle: function(title) {
this.title = title;
this.trigger("change:title", title);
}
})