我实例化了 ChildView 几次。在 ChildViews 中有一个触发器。一旦触发,就会调用父级中的一个函数来设置模型。问题是,触发器只触发一次(至少我可以看到一次),但父级收到两个。我知道鬼视图,但我如何找到它们?我不使用全局命名空间,我使用 require.js。
vParentView = require 'views/parentview'
class vParentView
render: ->
view1 = new ChildView()
view1.on 'data changed', @updateModel, @
view2 = new ChildView()
view2.on 'data changed', @updateModel, @
view3 = new ChildView()
view3.on 'data changed', @updateModel, @
etc...
updateModel: (data) ->
@model.set data.attr, data.options
我删除了上下文 @ 以查看哪个视图触发了 updateModel() 两次,也许它们来自不同的视图,但不是。所以,同一个视图会触发 updateModel 两次。
编辑: ChildView 的代码有点无趣:
vChildView = require 'views/childview'
class vChildView
events:
'change input.someclass': 'onChangeInput'
'change textarea.someclass': 'onChangeInput'
onChangeInput: (e) ->
@trigger 'data changed'
render: ->
html = _.template tpl
@$el.html html
@