我正在阅读骨干教程,并了解以下代码文件,其中导师从model
删除了一个collection
并更新了用户界面
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();
删除整个视图并重新渲染
顺便说一下,我对骨干来说是全新的,所以请轻松一下答案 0 :(得分:1)
如果页面中包含jQuery,则每个视图都有一个$函数,该函数在视图元素中运行作用域的查询...它等同于运行:view。$ el.find(selector)
所以 - this.$(...)
- 选择器只解析视图的元素,而不是整个DOM。我会坚持第一种方式。