我玩了一下Backbone.js
和Backbone.Marionette
,我想知道trigger
和triggerMethod
之间的区别。
特别是,有没有经验法则来决定何时使用前者或后者?
例如,在我看来,事件对于DOM元素和它的视图之间的通信是很有用的。triggerMethod
在Marionette中用于级联更新不同的组件,例如,一个布局调用show
方法给它的子级(子级响应onShow
)。因此,对我来说,这与在它上面调用直接方法是一样的。这是真的吗?
那么trigger
呢?
先谢谢你了。
2条答案
按热度按时间dkqlctbz1#
没有太大的区别,这取决于你想做什么......
trigger
将触发事件triggerMethod
将触发事件 * 并 * 根据命名惯例呼叫Map的方法(请参阅https://marionettejs.com/docs/v2.1.0/marionette.functions.html#marionettetriggermethod)显然,如果你只想触发一个事件,你可以使用
trigger
,但是使用trigger
你也可以创建一个“自制的”triggerMethod实现:trigger
事件,然后有一个侦听器来调用您想要的函数。那么
triggerMethod
呢?如上所述,它将触发一个事件并调用一个方法。因此,如果您的唯一目标是首先调用该方法,则不一定需要使用triggerMethod
。那么,为什么要使用
triggerMethod
呢?因为它提供了“钩子”来添加带有事件侦听器的功能。例如,在我的book on Marionette中,www.example.com中有一个triggerMethod
调用https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/edit/edit_controller.js#L24用于在表单上显示错误消息。通过简单地调用但是如上所述,
triggerMethod
为我们提供了一个“钩子”供以后使用。例如,假设我想添加用户错误的日志记录:我只需在视图中添加一个侦听器:这个额外的功能可以在不影响其余代码的情况下添加,因为我们使用了
triggerMethod
而不是直接的方法调用。此外,它将更容易在以后进行测试(小测试,单点故障):fxnxkyjh2#
x1月0n1x日
Backbone.js
的一部分triggerMethod(name)
Marionnete.js
的一部分trigger(name)
的所有功能例如,
triggerMethod('foo')
将调用onFoo()
例如,
triggerMethod('foo:bar')
将调用onFooBar()