我在让 Backbone.Marionette 与 Twitter Bootstrap 合作时遇到了问题。Bootstrap 期望标记符合预定义的模式才能工作,但是 Backbone 和 Marionette 处理事情的方式,似乎不可能使用 aMarionette.Layout
为带有嵌入式下拉菜单的导航栏生成符合 Bootstrap 的标记。
这是问题所在:
假设我有一个Marionette.Layout
代表导航栏,并且我想要一个region
,我将在其中放置CollectionView
orCompositeView
来管理下拉列表中的项目。是region
一个选择器,所以在这种情况下,如果我们有:
<div class="navbar">
<ul class="nav">
<li>Static item</li>
<li id="dynamic-dropdown"></li>
</ul>
</div>
然后布局将指定动态下拉列表的区域,如下所示:
Marionette.Layout.extend({
regions: {
dropdown: '#dynamic-dropdown'
}
...
});
然后我会有一个CompositeView
负责渲染下拉项目模型,为 Bootstrap 下拉菜单指定额外标记等。问题是似乎不可能#dynamic-dropdown
成为$el
for the CompositeView
,因为 Backbone 总是插入一个额外的div
(或您在 中指定的任何内容tagName
)。为了使下拉菜单按预期显示,我需要去掉那个额外的元素并让视图的 root 成为#dynamic-dropdown
。
我整理了一个 jsfiddle 来说明我的意思。
tl;dr 如何使 aView
的根元素成为 a 中指定的区域Marionette.Layout
?