所以我有一个数据网格,网格中的每个项目都有一个关联的模型和视图。我需要将每个项目呈现为两个表行,以实现所需的UI。 (不,这不是我的设计......)
首次尝试:在视图的render()
方法中,只渲染两行并将其添加到this.el
。然后我将每个视图附加到表中,并发现每对行都包含在<div>
中。 HTML无效,布局错误。
好的,第二次尝试:再次在视图中渲染两行,但不是将整个视图附加到表中,而是使用tableItemView.$("tr")
附加子行。万岁,它的作品!但坚持......行事件现在已经停止了。我发现这是因为主干使用jQuery.delegate
,因此所有事件都被委托给原来的el
,而{{1}}不再是表格的一部分。
我喜欢骨干网的干净架构,但很难找到一个很好的解决方案。有什么想法吗?
答案 0 :(得分:19)
设置
tagName: 'tbody'
应该允许您将相关的tr标记组合在一起而不会破坏表格,并且仍允许this.el工作。
答案 1 :(得分:1)
在您的视图对象中,您的tagName属性设置为什么?
来自文档:
this.el is created from the view's tagName, className, and id properties,
if specified. If not, el is an empty div
您可能想要设置
tagName: 'tr'
然后在render()中:
$(this.el).html("<td>content for row one</td>").append("<tr><td>content for row two</td></tr>");
这可能不会完全奏效,但你明白了。
答案 2 :(得分:0)
一个选项是简单地创建2个小视图,每个视图引用相同的模型,每行一个。
根据2行需要的集成方式(可能作为一个单元移动/排序),您可以拥有一个类似“控制器”的视图来创建子视图并协调其行为。