2013-03-01 2 views
12

Я знаю, что эта проблема возникает миллион раз, но я прошел через ответы и ни один из них не помог. .jQuery & Backbone click events not firing

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

В скрипку, когда я связываю нормальный $ ('# Войти-BTN') нажмите(); событие прекрасно работает, хотя оно не в моей собственной установке (с хромом). Событие clickbone click не работает.

Это то, что заголовок выглядит как на мой собственный код

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

Я знаю, что его лучшая практика, чтобы включить их в сноске, но сейчас, пока эта проблема существует не имеет значения (?).

+0

Есть ли ошибки в консоли для разработчиков Chrome? –

+0

Нет, нет, привязка события клика от консоли непосредственно через jQuery, похоже, работает. Я пробовал использовать .on() и т. Д. Ни один из них не работает. Магистраль просто терпит неудачу .. – SamV

+0

'

5

я должен был установить эль без JQuery для того, чтобы работать в JSFiddle ... el: 'body'

1

Как объясняется другим ответом, для events для работы вам нужно использовать el. el свойство необходимо для создания основы для регистрации событий путем ссылки на элемент в el. Но в некоторых случаях html еще не создан. В таких случаях вы можете использовать tagName вместо el. tagName полезно для генерации элемента динамически точно так же, как document.createElement.

-1

Магистральные сети el Node определяют рабочее пространство контроллера просмотра.Только узлы внутри el будут затронуты, прослушаны или изменены из метода рендеринга Backbones.

Установите el как можно ближе к области, которую вы хотите сохранить с помощью контроллера View, чтобы избежать перекрестков или нежелательного воспитания с помощью других контроллеров View.

Imagine View1 включает в себя Area View2 и визуализирует его узлы. View2 больше не работает, если он содержит ссылки на узлы, потому что они могут быть разбиты на рендеринг из View1.

Знайте о перекрестках и его рисках. Магистраль - это Библиотека, а не Рамка и не защитит вас от глупостей.