Я пытаюсь поиграть с Backbone и столкнулся с проблемами, особенно с «el» и событиями. Я заметил, что я не первый, но, к сожалению, не смог найти оптимальный ответ на мои вопросы.Магистраль: el и события
Моя база соответствующий код :
HTML:
VIEW<!DOCTYPE html>
<html>
<head>
<script data-main="main" src="js/require.js"></script>
</head>
<body>
<div id="login"></div>
</body>
</html>
: функция
Обратите внимание на комментарий в Initialize():
var view = Backbone.View.extend({
el: $("#login"),
initialize: function() {
this.el.html('<div>click here</div>'); // TypeError: this.el.html is not a function
}
.....
Вопрос 1 , это ошибка, зарегистрированная Firebug при загрузке этот код.
Но, когда я удаляю конфигурацию «el» и вместо этого назначаю соответствующее присваивание в initialize(), ошибка времени выполнения исчезла!
var view = Backbone.View.extend({
// "el" is now removed
initialize: function() {
this.el = $("#login"); // explicit assignement
this.el.html('<div>click here</div>'); // appends the div correctly
}
.....
Вопрос 2: В обоих этих примерах, если я указываю события просмотра событий в CONFIG, событие никогда не срабатывает:
events: {
"click": "tryLogin"
},
...
Пожалуйста, просветите меня! :)
Насколько Вопрос 2 идет, если вы непосредственно возиться с 'this.el' в представлении, то ваши события нажраться, потому что' delegateEvents' не будет вызван для присоединения событий к новому 'el'. Однако, если вы используете ['setElement'] (http://backbonejs.org/#View-setElement) для изменения' el', все настраивается: новые 'el', new' $ el' и 'delegateEvents 'вызывается для перемещения привязок событий. –
Похоже, я теряю некоторые подробности здесь. Есть очень много противоречивой информации вокруг el и $ el. В примере TODO (с официального сайта базы данных: http://backbonejs.org/docs/todos.html) у нас есть такая конфигурация: el: $ ("# todoapp")! Существуют и другие примеры, например, типичный способ создания представления (новый вид ({el: $ ("# container")}) Вы говорите, что это неправильно. В чем же правда? :) – Aleks
@Aleks Я цитируется непосредственно из текущей документации, возьмите ее или оставьте ее – meagar