Javascript 如何在Marrionette复合视图中为模型动态选择项目视图
我有一个模型,它有一个数组,让我们称之为块。所有块都具有块标题属性。根据我拥有的块标题属性,我需要以不同的方式管理视图/模型。因此,我想知道如何使用marrionette中的composite或collection视图渲染块集合,根据每个模型中的块标题使用不同的模板 我目前的工作是这样的:Javascript 如何在Marrionette复合视图中为模型动态选择项目视图,javascript,backbone.js,dynamic,view,marionette,Javascript,Backbone.js,Dynamic,View,Marionette,我有一个模型,它有一个数组,让我们称之为块。所有块都具有块标题属性。根据我拥有的块标题属性,我需要以不同的方式管理视图/模型。因此,我想知道如何使用marrionette中的composite或collection视图渲染块集合,根据每个模型中的块标题使用不同的模板 我目前的工作是这样的: App.view.external\u report.TemplateSetup=Marrionette.CompositeView.extend({ __名称:“'ExternalReport$Temp
App.view.external\u report.TemplateSetup=Marrionette.CompositeView.extend({
__名称:“'ExternalReport$TemplateSetup',
模板:“外部报告/模板设置”,
类名:“外部报告”,
超级:App.view.CompositeView.prototype,
id:“模板设置”,
活动:{
'单击#取消':'取消',
“单击#保存”:“保存”
},
初始化:函数(选项){
如果(!this.model | |!this.model.get('template'))抛出“找不到模型或模板”;
var templateObj=JSON.parse(this.model.get('template');
var块=templateObj.SubBlocks;
this.blockViews=[];
_.每个(块、功能(块){
var模型=新主干网模型(块);
this.blockview.push(新建App.view.external_report.blocks.BaseBlock({
型号:型号
}))
}.约束(这个);
},
onRender:function(){
_.each(this.blockView,函数(blockView){
blockView.render().then(函数()){
此.el.append(blockView.el);
}.约束(这个);
}.约束(这个);
},
保存:函数(){
this.model.set('template',JSON.stringify(this.generateTemplate());
this.model.save().then(function()){
//占位符
}.约束(这个);
},
generateTemplate:函数(){
var template=JSON.parse(this.model.get('template');
template.SubBlocks=[];
_.each(this.blockView,函数(blockView){
push(blockView.generateBlockJSON());
}.约束(这个);
返回模板;
}
});
我认为您应该创建两个ItemView并覆盖函数getChildView
,以选择要渲染的ItemView
另一种方法是创建一个ItemView并选择要渲染的模板,覆盖
getTemplate
函数以选择要渲染的模板。我认为应该创建两个ItemView并覆盖函数getChildView
,以选择要渲染的ItemView
另一种方法是创建一个ItemView并选择要渲染的模板,覆盖getTemplate
函数以选择要渲染的模板。可能重复的