我试图避免在主干中渲染视图时用空div包装。 我使用以下代码
this.$el.replaceWith(this.template(this.model.attributes));
return this;
但是当我按
添加此视图时,我得到空div$("#product-pannel").append(productsView.render().el);
有人给出这样的解决方案
render: function(){
var html = this.template(this.model.toJSON()));
var newElement = $(html)
this.$el.replaceWith(newElement);
this.setElement(newElement);
return this;
}
但我无法理解为什么我要这么复杂地执行此操作
有人可以告诉我el
和$el
的神秘感吗?
答案 0 :(得分:2)
custom SQL
指向视图元素(保存模板其余部分的元素)和el
是一个jQuery对象,代表el
元素因此您不必始终$(this.el)
。
文档中明确提到了这一点。
您可以使用el
选项将现有DOM元素指定为视图元素,或者为每个视图创建一个DOM元素。默认情况下,这将是<div>
。如果您不想要空<div>
,请使用tagName
,$el
等选项自定义元素主干创建为视图模板的顶级元素。
attributes
用于动态地将视图元素更改为其他内容...我很少(或从不)看到它实际被使用。