У меня есть вид, называемый DashboardView
, который создает несколько WidgetView
s. Каждый виджет должен иметь собственные привязки событий. Насколько я могу судить, эти привязки теряются, когда представление оказывается и добавил к родительскому мнению, а именно:События в Backbone.js вложенных представлений
class DashboardView extends Backbone.View
constructor: ->
context = @
_.each @collection, (w)->
dv = new app.WidgetView(model: w)
context.$el.append(dv.render())
class WidgetView extends Backbone.View
events:
"click .config" : "config_widget"
render: ->
_.template($("#widget-template").html(), @model)
Делая это таким образом, что события кликов на .config
элемент виджета теперь потеряны , Есть ли лучший способ смешивания вложенных представлений в родительском объекте, гарантируя, что обработчики событий на дочернем представлении правильно настроены?
Одно из решений, которое я видел в этой проблеме, - this article. Это выглядит правильно, но мне любопытно, есть ли более элегантный способ решения этого.
Это именно то, что я искал. Спасибо! – picardo
Вы можете избежать «контекста», используя ['(w) =>'] (http://coffeescript.org/#fat_arrow). И '@ collection' должен быть Underscore-ified уже так:' @collection.each (w) => 'это еще один вариант. –
@mu Cool ':)' Не знал про жирную стрелу. –