Wygląda na to, że następujący kod znajduje się wewnątrz initialize, ale moje wydarzenie nie wydaje się strzelać.

Czego tu brakuje?

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

Link do jsbin

3
Mike Fielden 5 październik 2011, 01:24

3 odpowiedzi

Najlepsza odpowiedź

Usuń przestrzeń w 'click .settings'

3
JaredMcAteer 4 październik 2011, 21:27

Faktycznie usuń .Setry całkowicie.

"Kliknij

W twoim przykładzie chcesz zarejestrować imprezę na stronie.El bezpośrednio, więc nie potrzebujesz selektora potomek.

3
gingerhendrix 5 październik 2011, 15:57

Problem polega na tym, że jest to element widoku ($el), który ma klasę settings, a nie dziecko.

click .settings powiesz na czele, aby powiązać zdarzenie "kliknij" na $el dla każdego dzieci, które mają .settings. Jednakże, ponieważ jest $el, który ma klasę settings wiązanie nigdy nie pasuje.

Dlatego, gdy usuniesz .settings działa, ponieważ mówisz "dowolny" kliknij "na $ El"

Powodem, dla którego dokumentacja mówi click .blah jest dlatego, że zakłada, że element (y) HTML z class='blah' są dziećmi elementów $el.

Mam nadzieję, że to pomoże.

3
ronalchn 29 wrzesień 2012, 23:58