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.

È stato utile?

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>
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top