Javascript 将compositeView选项传递给itemView
我有一个具有itemView的compositeView。我在实例化时通过options对象将值传递到compositeview。在compositeView中,我将itemview属性设置为itemview,并使用itemViewOptions属性尝试将选项中的值传递到复合视图中。以下是我的代码: 合成视图:Javascript 将compositeView选项传递给itemView,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,我有一个具有itemView的compositeView。我在实例化时通过options对象将值传递到compositeview。在compositeView中,我将itemview属性设置为itemview,并使用itemViewOptions属性尝试将选项中的值传递到复合视图中。以下是我的代码: 合成视图: myFirstCompositeView = Marionette.CompositeView.extend({ template: Handlebars.templates["
myFirstCompositeView = Marionette.CompositeView.extend({
template: Handlebars.templates["myTemp"],
initialize: function(options){
//this console statement works as expected options are there
console.log("myFirstCompositeView.initialize() -> options -> ", options);
this.eventBus = options.eventBus;
this.mapModel = options.myModel;
//i tried this
this.itemView : myFirstItemView;
this.itemViewOptions = this.myModel;
},
i also tried this...
itemView : myFirstItemView
itemViewOptions = this.myModel;
});
new myFirstCompositeView ({
myModel : {testval : 777, teststr: "holy cow"},
collection: model.get("myFirstCollection"),
eventBus: eventBus
}));
项目视图:
myFirstItemView = SegmentItemView = Marionette.ItemView.extend({
template: Handlebars.templates["myothertemp"],
initialize : function(options){
//value undefined
console.log("myFirstItemView .initialize() -> ", options.myModel);
},
});
CompositeView的实例化:
myFirstCompositeView = Marionette.CompositeView.extend({
template: Handlebars.templates["myTemp"],
initialize: function(options){
//this console statement works as expected options are there
console.log("myFirstCompositeView.initialize() -> options -> ", options);
this.eventBus = options.eventBus;
this.mapModel = options.myModel;
//i tried this
this.itemView : myFirstItemView;
this.itemViewOptions = this.myModel;
},
i also tried this...
itemView : myFirstItemView
itemViewOptions = this.myModel;
});
new myFirstCompositeView ({
myModel : {testval : 777, teststr: "holy cow"},
collection: model.get("myFirstCollection"),
eventBus: eventBus
}));
是否仍要将值传递到itemView?尝试以下操作:
myFirstCompositeView = Marionette.CompositeView.extend({
template: Handlebars.templates["myTemp"],
initialize: function(options){
this.eventBus = options.eventBus;
this.mapModel = options.myModel;
},
itemView : myFirstItemView,
itemViewOptions: function(){
return {
myModel: this.myModel
};
}
});
如果需要,还可以将itemViewOptions指定为函数
计算运行时返回的值。模型将通过
计算时是否需要访问该函数
itemViewOptions。函数必须返回一个对象,并且
对象的属性将复制到itemView实例的
选项