Marionette 事件未触发

Events not firing with Marionette

我正在使用来自 Marionette 的 CompositeView 创建一个简单的页面,其中包含一个包含一组模板的 parent lodash 模板:一个用于Collection.

中的每一项

页面显示正确,每个 ItemView 使用它自己的 child 模板正确呈现,但绑定 'click' 事件无法在应用程序,即使移动到 CompositeView.

我怀疑这是由于事件在创建元素之前被绑定而发生的,并且之后没有更新。根据我的阅读,它使用/使用了 .live() / .on(),但我看不出它不会注册的任何其他原因。

有没有办法确保 onRender() 事件反弹?我是不是完全做错了什么?

环境:RequireJS、BabelJS (es6)、Backbone 1.1.2、Marionette 2.4.1、jQuery 1.10.2

我创建了a gist of the code in question.

非 ES6: 尝试在父构造函数调用之前分配 this.events,在 Backbone 1.2.1+ 中,事件在 [=11= 之前创建] 在父构造函数中。在 1.1.2 中,它们是在 initialize 之后创建的,但仍然是父构造函数所做的最后一件事 - 所以你应该在 initialize 中分配它们,或者在 super 调用之前完成(我建议在 super 之前调用构造函数,这样如果你升级它就不会再次中断)。

ES6 中你不能在 super 调用之前使用 this

您可以再次调用 this.delegateEvents();,但这并不理想,因为它会停止侦听然后重新侦听效率较低的任何现有事件(尽管影响可能可以忽略不计)。

如果您使用支持它的转译器(例如 Babel),您可以在 class 定义中使用 es7 的 static 属性,或者使事件成为 returns一个对象,如果你需要它是动态的。