Проблема с получением Backbone.js просмотр события для запуска

#javascript #backbone.js

#javascript #backbone.js

Вопрос:

Похоже, что следующий код попадает внутрь initialize , но мое событие, похоже, не запускается.

Чего мне здесь не хватает?

 var index = (function ($, window, document) {

    var methods = {};

    methods = {
            init: function () {

            },

            getView: Backbone.View.extend({
              el: $('.settings'), 

              events: { 
                 'click .settings': 'addUl'
              },

              initialize: function () {
                  console.log('init');
              },

              render: function () {
              },

              addUl: function () { 
                console.log('addUI');
                this.el.append("<ul> <li>hello world </li> </ul>");
              }
            })
    };

    return methods;   } (jQuery, window, document));   
  

var stuff = new index.getView();

Ссылка на jsbin

Ответ №1:

Удалите пробел в 'click .settings'

Комментарии:

1.Это сработало, но почему в документации это написано click .blah documentcloud.github.com/backbone/#View-delegateEvents

2. Хороший вопрос, я начинаю подозревать, что мой комментарий может быть побочным эффектом, а не правильным решением. Когда у меня будет немного времени, я изучу это дальше, если кто-то другой не ответит.

Ответ №2:

На самом деле полностью удалите .settings.

‘click .settings’ регистрирует обработчик щелчка для потомка этого.el, соответствующий ‘.settings’.

В вашем примере вы хотите зарегистрировать событие в this.el напрямую, поэтому вам не нужен селектор потомков.

Ответ №3:

Проблема в том, что именно ваш view element ( $el ) имеет settings класс, а не дочерний элемент.

click .settings сообщает магистрали привязать событие «щелчка» $el для всех дочерних элементов, которые есть .settings . Однако, поскольку у него есть $el класс settings , привязка никогда не совпадает.

Вот почему, когда вы удаляете .settings его, это работает, потому что вы говорите «любой «щелчок» на $ el»

Причина, по которой говорится в документации, click .blah заключается в том, что предполагается, что html-элементы с class='blah' являются дочерними элементами $el элемента.

Надеюсь, это поможет.