Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Marrionette复合视图中为模型动态选择项目视图_Javascript_Backbone.js_Dynamic_View_Marionette - Fatal编程技术网

Javascript 如何在Marrionette复合视图中为模型动态选择项目视图

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

我有一个模型,它有一个数组,让我们称之为块。所有块都具有块标题属性。根据我拥有的块标题属性,我需要以不同的方式管理视图/模型。因此,我想知道如何使用marrionette中的composite或collection视图渲染块集合,根据每个模型中的块标题使用不同的模板

我目前的工作是这样的:

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
函数以选择要渲染的模板。

可能重复的