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 复合视图的 itemView,以及这里未显示的其他一些内容。

4

3 回答 3

5

BackboneViews被设计为将自己的 DOM 元素存储为视图的el属性。

不建议按照 Steven-Farley 的建议删除视图元素,因为事件可能会绑定到它。

最好的方法是将您的tagName属性更改collectionViewul.

另请参阅:Backbone.Marionette 中的项目视图和布局中的额外 div

于 2013-01-02T19:48:02.613 回答
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 回答
1

关于这个集合视图的几件事不需要模板

它要么呈现

或者
取决于集合是否有任何东西。


如果您不希望每个项目中都有“div”,那就这么说吧。尝试添加

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

然后从您的项目模板中删除包装 <li> 。

您不需要为此用例修改 appendHtml att all。

于 2012-12-30T17:04:30.937 回答