Backbone.js Visualizza gli interpreti, ma non visualizzati sulla pagina
-
10-12-2019 - |
Domanda
Sto lavorando alla conversione di un'app a pagina singola su backbone.js.La vista qui sotto utilizza il tag del corpo come è tagname - vale a dire, voglio che la vista occupare l'intero contenuto della pagina.Non voglio usare divs container o altri hack.
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
.
Quando il rendering, vedo
finished
[
<body>
<h1>test</h1>
</body>
]
.
Ma dopo di ispezionare il DOM, il corpo non ha più il testo.
Soluzione
tagName
Indica quale backbone del tag dovrebbe utilizzare per creare il suo EL se nessun el è fornito dal costruttore.L'elemento creato non viene automaticamente inserito nel DOM.
Il modo più semplice è probabilmente quello di creare la tua vista con il suo set EL su body
:
new ThingView({el:'body'})
. Altri suggerimenti
Che cosa ha spiegato Nikoshr è corretto.Aggiungendo ad esso, usando Tagname è corretto.Ma idealmente dovresti usare EL ELEMENT, che è definito nella libreria backbone.js come elemento (EL) di vista.
Sotto è il codice ideale che dovresti usare mentre lo fai.
<script type="text/javascript">
$(document).ready(function(){
var ThingView = Backbone.View.extend({
el:$("body"),
initialize: function(){
_.bindAll(this,"render");
this.render();
},
render:function(){
this.el.append('<h1>test</h1>');
console.log('finished');
console.log($(this.el).html());
}
});
var ThingView = new ThingView();
});
</script>
.