CompositeView
的孙子孙女与孙子女的父母一同追加到同一个街区? childViewContainer
的{{1}}非常智能,可以识别存在于自己模板中的选择器。但是,该视图的子CompositeView
想要在父模板中使用选择器作为其自己的子视图的CompositeView
将导致Backone抛出错误。问题是第一个孩子中的'childViewContainer'不知道查看该选择器的父模板。因此,如果我指定祖父表模板中存在的选择器,则孙子将不会附加有效的childViewContainer
。
我有一组嵌套模型。模型看起来像:
childViewContainer
顶层是var aModel =
{
prop1.1: value1.1,
prop1.2: value1.2,
prop1.3: [
{
prop2.1.1: value2.1.1,
prop2.1.2: value2.1.2
},
.
.
.
{
prop2.N.1: value2.N.1,
prop2.N.2: value2.N.2
}
]
}
,其中包含以下内容
CompositeView
这个视图,称之为<table>
<thead>
<tr>
<th>
View1.HeadRow.Column1
</th>
<th>
View1.HeadRow.Column2
</th>
<th>
View1.HeadRow.Column3
</th>
</tr>
</thead>
<tbody class="tbody1">
</tbody>
</table>
,产生View1
个孩子,说CompositeView
个孩子,将会呈现View2
tr
。 el
中的childContainer当然是View1
(即上面的模板中)。
'View2'会渲染子<tbody>
,并将其称为View3 ItemView
View3 children.
tr children render
el`。
虽然此时我的方案意味着嵌套结构()。我想要完成的是
View1 > View2 > View3
和View2
应该呈现为兄弟姐妹。为了说明结果,应该如下所示:
View3
具有两个模型的渲染样本看起来像:
我认为将<table>
<thead>
<tr>
<th>
View1.HeadRow.Column1
</th>
<th>
View1.HeadRow.Column2
</th>
<th>
View1.HeadRow.Column3
</th>
</tr>
</thead>
<tbody class="tbody1">
<tr>
<td rowspan="N+1">
View2.Row1.Column1
</td>
<tr>
<td>
View3.Row2.Column2
</td>
<td>
View3.Row2.Column3
</td>
</tr>
.
.
.
<tr>
<td>
View3.RowN.Column2
</td>
<td>
View3.RowN.Column3
</td>
</tr>
</tbody>
</table>
渲染为View3
的兄弟会的关键是将View2
与View3
分配为View2
,即
childViewContainer: 'tbody.tbody1'
View2
视图中的
View2
是生成View3
的视图。但是,'tbody.tbody1'
选择器是在View1
模板中定义的。因此,在呈现View3
子项时,'tbody.tbody1'
选择器不在DOM中。如何将View3
个孩子与View2
个孩子放在同一个街区?
答案 0 :(得分:1)
如果您想要执行上述解释,则需要破解CompositeView.render()
功能。对于此特定用例,您最好想要创建自己的特殊Marionette.CompositeView
类。
其核心CompositeView
并非旨在能够执行您所描述的内容。
更多关于CompositeView by Derick Bailey, the author behind Marionette。