我有一个需要将数据填充到dl标记的视图,所以我希望该视图生成一个如下所示的标记:
<dt><i class="icon-<%= icon %>"></i><%= title %></dt>
<dd><%= content %> </dd>
所以,我真的没有顶级元素可行。它不能是dl标签,因为我之后需要在顶部元素中放置几个项目。
有没有办法解决这个问题?
答案 0 :(得分:3)
这里没有好的选择。正如您所说,项目视图没有有效标记(因为dl
实际上仅对dt
和dd
作为子项有效)且视图只有一个$ el。
也许您应该重构代码,以便拥有代表整个DL的集合视图?如果集合中没有很多模型,那么在任何模型发生变化时重新渲染DL / Collection视图可能没问题:
var Definitions = Backbone.View.extend({
tagName: 'dl',
initialize: function () {
this.collection.on('change', this.render, this);
}
render: function () {
this.$el.html( <output from template that loops over all definitions> );
}
});
如果你想要有效的HTML,我无法想到它。如果您不太关心语义,可以使用带有单独项目视图的无序列表。
答案 1 :(得分:0)
我真的不太了解你的问题,但这是一个答案。作为概念,视图元素应该是dl或者在您的情况下,您正在定义“列表中的项目”(如BookCollectionView和BookItemView),因此,您可以有2个视图:1个用于其他项目list()。希望它可以帮助你。