Backbone rerender vs jquery remove

Backbone rerender vs jquery remove

本文关键字:remove jquery vs rerender Backbone      更新时间:2023-09-26

我正在学习一个主干教程,并在以下代码片段中了解到导师从collection中删除一个model并更新 UI

var PersonsView = Backbone.View.extend({
    initialize: function(){
        this.model.on('add', this.addPerson, this);
        this.model.on('remove', this.removePerson, this);
    },
    addPerson: function(person) {
        var personView = new PersonView({model: person});
        this.$el.append(personView.render().$el);
    },
    removePerson: function(person){
        this.$('li#' + person.id).remove();
    },
    render: function() {
        var self = this;
        self.model.each(function(record) {
            var personView = new PersonView({model: record});
            self.$el.append(personView.render().$el);
        });
    }
});

在函数中

removePerson: function(person){
    this.$('li#' + person.id).remove();
},

他正在 DOM 中搜索songId并使用 jQuery 将其从 UI 中删除。

我的问题是完成此任务的更快方法是什么?

this.$('li#' + person.id).remove();

其中整个 DOM 树将被解析为搜索元素并将其删除或

this.$el.html('');
this.render();

删除并重新渲染整个视图的位置

顺便说一句,我是骨干网的新手,所以请放轻松

来自骨干网站

如果页面上包含 jQuery,则每个视图都有一个 $ 函数,该函数运行在视图元素内的查询...它相当于运行:view.$el.find(selector)

因此,-this.$(...)-选择器仅解析视图的元素,而不是整个DOM。我会坚持第一种方式。