调试未在视图中加载的事件

时间:2013-01-30 19:40:42

标签: backbone.js

我的活动未自动加载。当我在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循环没有任何区别。

1 个答案:

答案 0 :(得分:0)

好的,我解决了,但我不明白这些工作。

我正在使用'视图管理器',它将所有视图和节目(读取:将html附加到DOM)注册父视图。触发新路线时会触发视图管理器的show函数,但路由被激活为double,一次为“route:edit”,一次为“route”。我用router.on“all”,(eventName) - >抓住了它们。等等。我认为事件绑定到html,但是html被第二个路由器事件覆盖而没有绑定并附加到DOM。问题仍然是路线被解雇两次的原因。