多个表行作为backbone.js视图?

时间:2011-08-15 20:27:45

标签: javascript backbone.js

所以我有一个数据网格,网格中的每个项目都有一个关联的模型和视图。我需要将每个项目呈现为两个表行,以实现所需的UI。 (不,这不是我的设计......)

首次尝试:在视图的render()方法中,只渲染两行并将其添加到this.el。然后我将每个视图附加到表中,并发现每对行都包含在<div>中。 HTML无效,布局错误。

好的,第二次尝试:再次在视图中渲染两行,但不是将整个视图附加到表中,而是使用tableItemView.$("tr")附加子行。万岁,它的作品!但坚持......行事件现在已经停止了。我发现这是因为主干使用jQuery.delegate,因此所有事件都被委托给原来的el,而{{1}}不再是表格的一部分。

我喜欢骨干网的干净架构,但很难找到一个很好的解决方案。有什么想法吗?

3 个答案:

答案 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行需要的集成方式(可能作为一个单元移动/排序),您可以拥有一个类似“控制器”的视图来创建子视图并协调其行为。