3

我有一个需要将数据填充到 dl 标记的视图,因此我希望该视图生成一个如下所示的标记:

<dt><i class="icon-<%= icon %>"></i><%= title %></dt>
<dd><%= content %> </dd>

所以,我真的没有一个可以工作的顶级元素。它不能是 dl 标签,因为之后我需要在该顶部元素中放置几个​​项目。

有没有办法解决这个问题?

4

2 回答 2

3

这里没有好的选择。正如您所说,项目视图没有有效的标签(因为 adl实际上只对子项有效)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,我想不出任何办法。如果您不太关心语义,则可以使用带有单独项目视图的无序列表。

于 2012-09-26T18:48:34.447 回答
0

我真的不太明白你的问题,但这里有一个答案。作为概念,视图元素应该是 dl,或者在您的情况下,您正在定义“列表中的项目”(如 BookCollectionView 和 BookItemView),因此,您可以有 2 个视图:1 个用于该项目,另一个用于该项目列表 ()。希望它可以帮助你。

于 2012-09-26T18:11:08.987 回答