我正在尝试构建一个应用程序,其中有一个CompositeView
处理鼠标事件的应用程序,允许您在其中绘制矩形(CompositeView 是矩形的集合)。我正在计算/存储CompositeView
.
因为我在计算东西,所以我使用了这个itemViewOptions
函数,它返回一个包含所有必要数据的对象,它将作为选项传递给我的ItemView
(RectangleView)。
在我调用 setCssStyle 方法的initialize
方法中ItemView
,该方法将 css 属性应用于视图。
这是我的 CompositeView (ScreenView) 和 ItemView (RectangleView) 代码(为简洁起见,省略了计算和数据停止方法)
var RectangleView = Backbone.Marionette.ItemView.extend({
template: "<div>I am a rectangle</div>",
className: "rectangle",
initialize: function(options){
this.left = options.left;
this.top = options.top;
this.width = options.width;
this.height = options.height;
this.border = options.border;
this.setCssStyle();
},
setCssStyle: function () {
this.$el.css({
'width': this.width + 'px',
'height': this.height + 'px',
'top': this.top + 'px',
'left': this.left + 'px',
'border': this.border
});
}
});
var ScreenView = Backbone.Marionette.CompositeView.extend({
template: "<div> </div>",
className:"screen",
itemView: RectangleView,
itemViewOptions: function() {
return {
left: this.left,
top: this.top,
width: this.width,
height: this.height,
border: this.border
}
},
[...]
});
我读过我需要重写buildItemView
传递它3个参数的方法:item, ItemViewType, itemViewOptions
根据木偶文档
问题是我有点困惑,我真的不知道item
我应该传递的参数是什么。它是 ItemView 的模型吗?我尝试了不同的东西并不断出错,所以我很可能在这里遗漏了一些基本的东西。
另外,目前我的 RectangleView 没有模型。我应该创建一个,我怎样才能将我的传递给我的itemViewOptions
,最终传递给模型?CompositeView
ItemView
如果我没有很好地解释我的问题,我提前道歉,但我的大脑感觉有点糊状