Магистраль Динамически создаваемые не связывающие события - PullRequest
1 голос
/ 10 декабря 2011

Как и у многих других пользователей здесь, у меня проблема с 'el' и событиями. В моей ситуации я протестировал несколько решений, в том числе, используя значение по умолчанию el (просто '') tagName, установив el в селектор, используя селектор jQuery, и установив WOM для готовности к DOM. Каждому из этих решений не удалось связать события, и все, кроме el по умолчанию и tagName, не смогли создать html. Соответствующий код View

$ ->
   class Aggregator.Views.Streams.StreamView extends Backbone.View
      template:JST["backbone/templates/stream"]
      el: $('.item')
      events:
       "click div" : "testing"
      initialize: (model)->
       console.log @el
       _.bindAll this , 'render'
       @model.bind 'change', @render
       @model.view = @
       @render()
       @delegateEvents()
      render: ->
       $(@el).html  "test"
       console.log @el
       @
      testing: ->
       alert "EVENT"
       #@model.clear()

Функция, которая вызывает представление (извлечено из другого представления)

view = new Aggregator.Views.Streams.StreamView({model: stream})
    console.log view.el
    $(@el).append view.render().el

Я немного сбит с толку, я установил el, но он либо не создает, либо не связывает события. Я пытался дождаться загрузки DOM и передать el конструктору, но безуспешно. Буду признателен за любую помощь в моей наиболее вероятной очевидной ошибке.

1 Ответ

6 голосов
/ 10 декабря 2011

Извините, меня не устраивает coffeescript, хотя я думаю, что узнал хэш вашего события

events: {
  "click div" : "testing"
}

, и я уверен, что вы пытаетесь привязать эту функцию тестирования к нажатию на элемент общего вида?есть проблема.

то, что на самом деле делает ваше событие клика (по селектору):

$('div', viewElement).click(fn);

означает, что вы не нацелены на div viewElement, а на div внутри вашего элемента view.

, если вы хотите связать с самим элементом общего вида, определите событие без селектора

в вашем случае:

events: {
  "click" : "testing"
}
...