1

我刚开始使用backbone.js。我有一个视图,可以在调用ListingListView时用新内容刷新表。fetch()

问题:此表包含一些<th>元素。如果我要在更新表格内容的过程中进行操作,则$(this.el).empty();元素将被删除。我怎样才能防止这种情况?我希望元素保留。谢谢!this.render()<th><th>

JS代码

// Views

window.ListingListView = Backbone.View.extend({
    el: '#listing_list table',

    initialize: function() {
        this.model.bind('reset', this.refreshList, this);
        this.model.bind('add', function(listing) {
            $(this.el).append(new ListingListItemView({ model: listing }).render().el);
        }, this);
    },

    render: function() {
        _.each(this.model.models, function(listing) {
            $(this.el).append(new ListingListItemView({ model: listing }).render().el);
        }, this);
        return this;
    },

    close: function() {
        $(this.el).unbind();
        $(this.el).empty();
    },

    refreshList: function() {
        $(this.el).empty();
        this.render();
    }
});

HTML 代码

<div id="listing_list">
    <table class="table table-bordered table table-striped">
        <th>Address</th>
        <th>Beds</th>
        <th>Baths</th>
        <th>Price</th>
    </table>
</div>
4

1 回答 1

3

您可以使用theadand向表中添加一些结构tbody

<div id="listing_list">
    <table class="table table-bordered table table-striped">
    <thead>
    <tr>
        <th>Address</th>
        <th>Beds</th>
        <th>Baths</th>
        <th>Price</th>
    </tr>
    </thead>
    <tbody>

    </tbody>
    </table>
</div>

并针对tbody您的renderrefreshList功能:

render: function() {
        var $tbody=this.$("tbody"); // or $(this.el).find("tbody")

        _.each(this.model.models, function(listing) {
               $tbody.append(new ListingListItemView({ model: listing }).render().el);
        }, this);

        return this;
},

refreshList: function() {
    this.$("tbody").empty();
    // or $(this.el).find("tbody").empty() if you prefer
    this.render();
}

笔记:

  • 不要忘记您可以将集合用作特殊选项而不是模型:http ://backbonejs.org/#View-constructor最后可能会更清楚一些。
  • 骨干代理集合上的下划线函数,_.each(this.model.models...可以写成this.model.eachthis.collection.each如果你应用上面的注释)
于 2012-06-19T16:35:22.087 回答