2013-03-01 18 views
12

Wiem, że ten problem pojawia się milion razy, ale przeszedłem już wszystkie odpowiedzi i żadna z nich nie pomogła. .Zdarzenia kliknięcia jQuery i kręgosłupa nie są uruchamiane

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}); 

W skrzypcach, gdy wiążę normalne $ ('# login-btn') kliknij(); zdarzenie działa dobrze, chociaż nie działa w mojej własnej konfiguracji (z chromem). Zdarzenie kliknięcia szkieletowego nie działa w ogóle.

To właśnie nagłówek wygląda na moim własnym kodem

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

Znam jego najlepszych praktyk, aby je umieścić w stopce ale teraz podczas gdy istnieje problem ten nie ma znaczenia (?).

+0

Czy są jakieś błędy w Chrome Developer Console? –

+0

Nie ma żadnych, wiązanie zdarzenia kliknięcia z konsoli bezpośrednio przez jQuery wydaje się działać. Próbowałem przy użyciu .on() etc .. żaden z nich nie działa. Backbone po prostu zawiedzie ... – SamV

+0

'

5

musiałem ustawić el bez jQuery go do pracy w JSFiddle ... el: "body"

1

Jak wyjaśniono w innej odpowiedzi, dla events do pracy, musisz użyć właściwości el. Właściwość el jest niezbędna do utworzenia szkieletu rejestrującego zdarzenia poprzez odniesienie do elementu we właściwości el. Ale w niektórych przypadkach html nie jest jeszcze generowany. W takich przypadkach można użyć tagName zamiast el. tagName jest użyteczne do dynamicznego generowania elementu, podobnie jak document.createElement.

-1

Węzeł podstawowy Węzeł określa obszar roboczy kontrolera widoku.Tylko węzły wewnątrz el zostaną zmienione, odsłuchane lub zmienione z metody renderowania szkieletów.

Ustaw el jak najbliżej obszaru, który chcesz utrzymywać za pomocą kontrolera widoku, aby uniknąć skrzyżowań lub niechcianych rodziców z innymi kontrolerami View.

Wyobraźnia Widok1 obejmuje obszar widoku 2 i renderowanie nad jego węzłami. View2 nie będzie działał więcej, jeśli posiada Referencje węzłów, ponieważ mogą one zostać uszkodzone poprzez renderowanie z View1.

Należy więc pamiętać o skrzyżowaniach widoków i związanych z nimi zagrożeniach. Backbone to biblioteka, a nie framework i nie ochroni cię przed robieniem głupich rzeczy.

Powiązane problemy