骨干视图顶级元素问题

时间:2012-09-26 17:53:25

标签: javascript backbone.js

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

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

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

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

2 个答案:

答案 0 :(得分:3)

这里没有好的选择。正如您所说,项目视图没有有效标记(因为dl实际上仅对dtdd作为子项有效)且视图只有一个$ 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()。希望它可以帮助你。