7

次のコードを使用して、テンプレートの dom 要素にビューを手動で追加しています。

appendHtml: function(collectionView, itemView, index){
      collectionView.$("ul#search_list_container").append(itemView.el);
}

私のテンプレートには次のものがあります。

<script id='search-list-grid-template' type='text/x-handlebars-template'>
    <ul id="search_list_container"></ul>
</script>

ビューを ul#search_list_container に追加しているにもかかわらず、テンプレートをラップするデフォルトの div があります。

<div>
    <ul id="search_list_container">
    <a href="#">
        <span id="search_list_item">
            id
            invoice_number
        </span>
    </a>
    </li>
    </ul>
</div>

デフォルトのタグ「div」を表示しないようにする方法はありますか? 私はこれで問題ありませんが、この例を思いつくたびに、この疑いが常に頭に浮かびます。

注: ul compositeView の itemView と、ここには表示されていないその他のものがあります。

4

3 に答える 3

5

バックボーンは、ビューのプロパティViewsとして独自のDOM要素が格納されるように設計されています。el

イベントがバインドされている可能性があるため、Steven-Farleyによって提案されたビューの要素を削除することはお勧めしません。

最良の方法は、のtagNameプロパティをに変更するcollectionViewことulです。

参照:Backbone.Marionetteのアイテムビューとレイアウトの追加のdiv

于 2013-01-02T19:48:02.613 に答える
1

この Collection View に関するいくつかのことはテンプレートを必要としません。

または
コレクションに何かがあるかどうかによって異なります。


各項目に「div」が必要ない場合は、そうです。追加してみてください

var yourItemView= Backbone.Marionette.ItemView.extend({
             tagName: "li",
          //OTHER STUFF HERE
          });

次に、アイテム テンプレートからラッピング <li> を削除します。

このユース ケースでは、appendHtml att all を変更する必要はありません。

于 2012-12-30T17:04:30.937 に答える
1

jQuery では.unwrap()を使用できます。

これを試して:

変化する:

collectionView.$("ul#search_list_container").append(itemView.el);

に:

collectionView.$("ul#search_list_container").append(itemView.el).unwrap();
于 2012-12-30T04:54:40.780 に答える