3

dlタグにデータを入力する必要があるビューがあるので、そのビューで次のようなマークアップを生成する必要があります。

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

だから、私は実際に機能するトップレベルの要素を持っていません。後でその一番上の要素にいくつかのアイテムを入れる必要があるので、dlタグにすることはできません。

これから抜け出す方法はありますか?

4

2 に答える 2

3

ここに良い代替手段はありません。あなたが言うように、アイテムビューには有効なタグがなく(adlは実際には子としてのみ有効でdtあるddため)、ビューには正確に1つの$elがあります。

おそらく、コードをリファクタリングして、代わりにDL全体を表すコレクションビューを作成する必要がありますか?コレクションにモデルがたくさんない場合は、モデルのいずれかが変更されたときにDL/コレクションビューを再レンダリングしても問題ない可能性があります。

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つのビューを持つことができます。リスト()。お役に立てば幸いです。

于 2012-09-26T18:11:08.987 に答える