Die Backbone.JS-Ansicht wird gerendert, aber nicht auf der Seite angezeigt
-
10-12-2019 - |
Frage
Ich arbeite an der Konvertierung einer Single-Page-App in backbone.JS.Die Ansicht unten verwendet das Body-Tag als tagName – ich möchte also, dass die Ansicht den gesamten Inhalt der Seite einnimmt.Ich möchte keine Container-Divs oder andere Hacks verwenden.
var ThingView = Backbone.View.extend({
tagName : "body",
...
// Show the HTML for the view
render : function() {
console.log('Displaying thing')
$(this.el).append('<h1>test</h1>');
console.log('finished')
console.log($(this.el))
return this; // For chaining
Beim Rendern sehe ich
finished
[
<body>
<h1>test</h1>
</body>
]
Aber nachdem ich das DOM untersucht habe, enthält der Textkörper keinen Text mehr.
Lösung
tagName
Gibt an, welches Tag Backbone zum Erstellen seines EL verwenden soll, wenn vom Konstruktor kein EL bereitgestellt wird.Das erstellte Element wird nicht automatisch in das DOM eingefügt.
Der einfachste Weg besteht wahrscheinlich darin, Ihre Ansicht mit der Einstellung el zu erstellen body
:
new ThingView({el:'body'})
Andere Tipps
was nikoshr erklärt ist richtig.Hinzufügen dazu, dass der TagName mit TagName korrekt ist.Idealerweise sollten Sie jedoch EL-Element verwenden, das in der Backbone.js-Bibliothek als Element (EL) der Ansicht definiert ist.
Nachfolgend ist der ideale Code, den Sie dabei verwenden sollten. generasacodicetagpre.