我的活动未自动加载。当我在render()方法的末尾添加delegateEvents()时,它工作了一段时间。我不想使用delegateEvents,但现在,即使使用delegateEvents,也不会加载事件。
我认为当时还不知道DOM,所以事件没有绑定,但我该如何检查(调试)?
查看:
class EditGroup extends BaseView
initialize: ->
@render()
render: ->
html = _.template tpl, @model.toJSON()
@$el.html html
for own key, options of FormConfig[@model.type]
options.key = key
options.value = @model.get key
input = new Input options
input.on 'valuechanged', (key, value) => @model.set key, value
@$('section.'+key).html input.$el
@delegateEvents() # doesn't work
@
DOM:
h2 Edit Group
section.title
section.type
section.members
button.save.btn.btn-primary(onclick="return false") Save changes
在类型和成员中,有类型和类型,并选择渲染(骨干视图)。一个工作没有delegateEvents,另一个工作。父视图中的事件(如上所示)根本不起作用。删除for循环没有任何区别。
答案 0 :(得分:0)
好的,我解决了,但我不明白这些工作。
我正在使用'视图管理器',它将所有视图和节目(读取:将html附加到DOM)注册父视图。触发新路线时会触发视图管理器的show函数,但路由被激活为double,一次为“route:edit”,一次为“route”。我用router.on“all”,(eventName) - >抓住了它们。等等。我认为事件绑定到html,但是html被第二个路由器事件覆盖而没有绑定并附加到DOM。问题仍然是路线被解雇两次的原因。