我有一个需要将数据填充到dl标签的 View ,因此我希望该 View 产生一个如下所示的标记:
<dt><i class="icon-<%= icon %>"></i><%= title %></dt>
<dd><%= content %> </dd>
因此,我实际上没有一个可以工作的顶级元素。它不能是dl标签,因为此后我需要在顶部元素中放置几项。
有没有解决的办法?
最佳答案
这里没有很好的选择。如您所说,项目 View 没有有效的标记(因为dl
实际上仅在dt
和dd
为子级的情况下才有效),并且一个 View 仅具有一个$ el。
也许您应该重构代码,以便有一个代表整个DL的集合 View ?如果集合中没有很多模型,则可以在任何模型更改时重新渲染DL / Collection View :
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,我想不出任何办法。如果您不太在意语义,则可以使用带有单独项目 View 的无序列表。