Marionette layoutView - 在layoutVIew中禁用默认元素

时间:2014-08-31 09:28:05

标签: backbone.js marionette

从Backbone继承,Marionette总是为视图创建一个默认的div元素。当我为视图准备模板时,这种行为让我感到困惑,然后突然发现,在我的模板顶部的DOM中创建了一个父div。

我真的想要所有默认的HTML,类,模板中的ID,而不是视图初始化代码。

有没有办法在Marionette中禁用插入默认div?

3 个答案:

答案 0 :(得分:0)

阅读 documentation 会显示以下内容:

  

this.el是根据视图的tagName,className,id和创建的   属性属性,如果指定的话。如果没有,el是一个空div。

也应该适用于木偶。

答案 1 :(得分:0)

您可以设置tagName,但必须为其指定标记名称,而不是空字符串。这将在渲染时围绕您的模板代码,就像div一样。

听起来你希望View元素'成为'来自模板的父元素,也许是为了避免多余的divs - 我曾经对此感到烦恼,有很多方法可以绕过它,但是它很hacky并且表面问题围绕重新渲染,事件绑定和nt工作没有父元素的模板 - 对我而言,它引起了复杂性,我已经接受了div并继续前进:)

这是一种方法 - Backbone, not "this.el" wrapping但我建议接受div,如果你想在模板中保留id和类,你仍然可以这样做。

答案 2 :(得分:0)

到@rwdrwd,我重载了区域渲染功能,允许渲染模板没有root div元素。

我不确定这种方法是否会阻止事件绑定并与骨干的其他部分发生冲突。

Marionette.Region.prototype.attachHtml = function(view){
     // my code:
     this.el.innerHTML='';
     this.el.innerHTML = view.el.innerHTML;
     // instead 'appendChild', I just assign the innerHTML of the view.el. 

     // Original implementation: 
     // 
     // this.el.innerHTML='';
     // this.el.appendChild(view.el);

};

你觉得这是好习惯吗?