2012-11-30 10 views
8

È possibile utilizzare la variabile globale nella vista backbone.js?È possibile utilizzare la variabile globale nella vista backbone.js?

exmpl:

var TodoView = Backbone.View.extend({ 

counter: null ; // is this possible ? 

initialize: function(){ 

this.render(); 

}, 

render: function(){ 



} 


}); 
+2

Questo sarebbe una variabile di istanza una particolare istanza vista, non globale a tutte le istanze della vista. – asawyer

+1

A parte ciò che @asawyer menziona, che è una sintassi JavaScript non valida, dovrebbe essere 'counter: null,' – Jack

+0

Thany you guy, sì lo vedo ora (; è uno fuori dai problemi), sono molto nuovo in OOP quindi non conosco tutta la terminologia. – Sysrq147

risposta

22

Si può facilmente memorizzare le variabili in almeno 3 differenti ambiti:

  • variabili di istanza regolari uniche per ogni istanza vista
    • questi possono essere memorizzati come proprietà su l'oggetto della vista this oggetto
    • Esempio: this.selectedItem = this.$el.find('.selected');
  • variabili a livello di classe condivisi da tutte le istanze della vista
    • questi possono essere memorizzati sulla funzione di costruzione della classe View
    • Esempio: TodoView.counter = 0; (mettere che dopo la vostra intera .extend invocazione)
  • Veri variabili globali (sì, queste sono cattive, ma visto che avete chiesto)
    • potete perdere questi omettendo var o solo esplicitamente y assegnare all'oggetto window
    • Esempio: window.appLaunchTime = new Date()
+2

Grazie mille (mi dispiace per il mio inglese o per il mio javascript knowlege in entrambi i casi.) – Sysrq147

+0

Semplicemente fantastico ... !!!! –

+0

window.xxx non funziona in backbone.js. Qualche idea?? (xxx è un nome di variabile) – jeevs

3

In aggiunta a ciò che Pietro ha già detto, se siete interessati ad avere ciò che equivale a una variabile privata che è disponibile in tutte le istanze del TodoView crei quindi potresti fare qualcosa come il seguente.

(function() { 
    var counter = 0; //This can be used now as a private variable inside TodoView 

    window.TodoView = Backbone.View.extend({ 

    initialize: function(){ 
     this.render(); 
     counter += 1; 
    }, 

    render: function(){ 
    } 
    }); 
})(); 
0

prova conclude la portata statica

var TodoView = Backbone.View.extend({ 
TodoView.counter++//reference it this way 
},{ 
counter: null ;}) 

può servire piuttosto come una variabile globale

Problemi correlati