2016-01-31 3 views
0

Я пытаюсь избежать обертывания пустым 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 a $el?

ответ

2

el указывает на элемент на вид (тот, который содержит остальную часть шаблона) и $el является объект JQuery represeting el элемент Так что вам не придется делать $(this.el) все время.

Это ясно указано в документации.

Вы можете указать существующий элемент DOM в качестве элемента вида, используя параметр el, или магистраль создает элемент DOM для каждого представления. По умолчанию это будет <div>. Если вы не хотите пустой <div>, настроить элемент магистральный создают в качестве верхнего уровня элемента шаблона вида, используя параметры, как tagName, attributes и т.д.

setElement для динамического изменения вида элемента на что-то другое ... Я редко (или никогда) видел, что он фактически используется.