Ich versuche zu vermeiden, dass beim Rendern der Ansicht im Backbone ein leeres div verwendet wird. Ich mache es mit dem folgenden Code
this.$el.replaceWith(this.template(this.model.attributes));
return this;
aber ich bekomme div leer, wenn ich diese ansicht von anhänge
$("#product-pannel").append(productsView.render().el);
Jemand gibt die Lösung so
render: function(){
var html = this.template(this.model.toJSON()));
var newElement = $(html)
this.$el.replaceWith(newElement);
this.setElement(newElement);
return this;
}
aber ich kann nicht verstehen, warum ich das oben so kompliziert machen soll kann mir jemand das geheimnis von el
ein $el
?
Antworten:
2 für die Antwort № 1el
zeigt auf das Ansichtselement (dasjenige, das den Rest der Vorlage enthält) und $el
ist ein jQuery-Objekt, das neu erstellt wird el
element Damit Sie nichts tun müssen $(this.el)
die ganze Zeit.
Dies wird in der Dokumentation deutlich erwähnt.
Sie können entweder ein vorhandenes DOM-Element als Ansichtselement mit angeben el
Option oder Backbone erstellt ein DOM-Element für jede Ansicht. Standardmäßig ist dies ein <div>
. Wenn du kein leeres willst <div>
Passen Sie das Element an, das das Backbone als oberstes Element Ihrer Ansichtsvorlage erstellt, indem Sie Optionen wie verwenden tagName
, attributes
etc.
setElement
ist für die dynamische Änderung des Ansichtselements zu etwas anderem ... Ich habe selten (oder nie) gesehen, wie es tatsächlich benutzt wird.