2013-03-01 12 views
12

So che questo problema si presenta un milione di volte, ma ho ricevuto le risposte e nessuno di loro ha aiutato. .jQuery e backbone eventi di clic non attivati ​​

JS Fiddle: http://jsfiddle.net/ZrYYy/

var LoginView = Backbone.View.extend({ 

    initialize: function() { 

     console.log('Login View Intialized'); 
     this.el = $('#login-container'); 

    }, 

    // Setup the events (mainly the login) 
    events: { 

     // Login - function 
     "click #login-btn" : "checkLogin" 

    }, 

    // Actually authorization function 
    checkLogin: function() { 

     console.log("Authorizing login details with server..."); 

    } 

}); 

// Get it all up and going 
var newLogin = new Login(); 
var loginView = new LoginView({model: newLogin}); 

Nel violino, quando mi legano a $ normale ('# login-btn') clicca(); evento funziona bene anche se non è nella mia configurazione (con chrome). L'evento click backbone non funziona in alcun modo.

Questo è ciò che l'intestazione appare come il mio codice

<link href="assets/admin/css/bootstrap.css" rel="stylesheet" type="text/css"> 
<link href="assets/admin/css/bootstrap-responsive.css" rel="stylesheet" type="text/css"> 
<link href="assets/admin/css/style.css" rel="stylesheet" type="text/css"> 
<script src="assets/admin/js/jquery-1.9.1.min.js"></script> 
<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script> 
<script src="http://documentcloud.github.com/backbone/backbone-min.js"></script> 
<script src="assets/admin/backbone/login.js"></script> 
<script src="assets/admin/js/bootstrap.min.js"></script> 

So che la sua migliore prassi di includere questi nel piè di pagina, ma per ora, mentre questo problema esiste, non importa (?).

+0

Ci sono errori nella console degli sviluppatori di Chrome? –

+0

No, non è possibile collegare un evento click dalla console direttamente tramite jQuery. Ho provato a utilizzare .on() ecc., Nessuno di essi funziona. Backbone non funziona ... – SamV

+0

'

5

ho dovuto impostare el senza jQuery per farlo funzionare in JSFiddle ... el: 'body'

1

Come spiegato da altra risposta, per events per funzionare è necessario utilizzare la proprietà el. La proprietà el è necessaria per eseguire il backbone sulla registrazione degli eventi facendo riferimento all'elemento nella proprietà el. Ma in alcuni casi, l'html non è ancora stato generato. In questi casi, è possibile utilizzare tagName anziché el. tagName è utile per generare elementi dinamicamente come document.createElement.

-1

Backbones el Node definisce l'area di lavoro del View Controller.Solo i nodi in el verranno interessati, ascoltati o modificati dal metodo di rendering di Backbones.

Impostare il più vicino possibile all'Area che si desidera mantenere con il View Controller per evitare intersezioni o genitorialità indesiderate con altri View Controller.

Imagine View1 include l'Area di View2 e il rendering sui suoi Nodi. View2 non funzionerà più se contiene References of Nodes, perché potrebbero essere interrotti attraverso il rendering da View1.

Quindi fai attenzione a View Intersections e ai suoi rischi. Backbone è una libreria, non un framework e non ti proteggerà dal fare cose stupide.

Problemi correlati