我刚刚开始我的第二个marionettejs应用程序。我正在使用requirejs。 我有点困惑如何处理从我的控制器上的子视图触发的事件(例如controller-> compositeView-> itemview或controller-> compositeview-> layout-> compositeview-> itemview)
我尝试了这些并且两者都正常工作: - application.vent - 让直接父级侦听然后触发相同的事件并让其父级监听它并重复此过程直到它到达控制器
我的问题是我应该使用哪一个或者首选哪一个?
谢谢
答案 0 :(得分:1)
我希望让控制器在可能的情况下处理App.vent
。
在你的情况下,控制器通常负责准备复合视图,因此控制器很容易监听composteView的itemViews中的事件,前缀为itemview
假设你有一个itemView
class QuestionView extends Marionette.ItemView
triggers:
'click .read-more' : 'read:more:clicked'
然后是一个复合视图
class QuestionsView extends Marinontee.CompositeView
itemView: QuestionView
然后在控制器中通常需要准备compositeView
questionsView = new QuestionsView
collection: question
现在,您可以使用“itemview”前缀轻松收听此控制器中问题itemView中的事件,然后使用此 exact itemView 作为参数触发应用级别曝光。
@listenTo questionsView, 'itemview:read:more:clicked', (itemView) ->
App.vent.trigger 'process:this:view:event', (itemView)