Lor*_*o B 9 javascript backbone.js marionette
我正在玩一点,Backbone.js而且Backbone.Marionette我想知道trigger和之间有什么区别triggerMethod.
特别是,有什么经验法则可以决定何时使用前者或后者?
例如,在我看来,事件对于DOM元素及其视图之间的通信非常有用.
triggerMethod在Marionette中用于更新级联的不同组件,例如布局将show方法调用给其子级(子级响应onShow).所以,对我而言,与调用直接方法相同.这是真的?
怎么样trigger?
提前谢谢你.
Dav*_*ulc 12
没有太大的区别,它只取决于你想做什么......
trigger 将触发一个事件triggerMethod将触发事件并根据命名约定调用相应的方法(请参阅https://marionettejs.com/docs/v2.1.0/marionette.functions.html#marionettetriggermethod)显然,如果你只想触发一个事件,你就可以使用了trigger.但是使用trigger你还可以创建一个"自制"triggerMethod实现:trigger事件,然后有一个监听器,它将调用你想要的功能.
那怎么样triggerMethod?如上所述,它将触发事件并调用方法.因此,如果您的唯一目标是首先调用该方法,则不一定需要使用triggerMethod.
那为什么一个人会用triggerMethod呢?因为它为您提供了"钩子"来添加事件侦听器的功能.在我的书的木偶,例如,有一个triggerMethod呼叫https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/edit/edit_controller.js#L24到在表单上显示错误消息.通过简单地呼叫也可以实现同样的目的
view.onFormDataInvalid(contact.validationError);
Run Code Online (Sandbox Code Playgroud)
但如上所述,triggerMethod给我们一个"钩子"供以后使用.例如,假设我想添加用户错误的记录:我只需在我的视图中添加一个监听器:
initialize: function(){
this.on("form:data:invalid", function(validationError){
// log error here
}
}
Run Code Online (Sandbox Code Playgroud)
可以在不影响其余代码的情况下添加此附加功能,因为我们已使用triggerMethod而不是直接方法调用.此外,以后测试会更容易(小测试,单点故障):
trigger(name)Backbone.jstriggerMethod(name)Marionnete.jstrigger(name)做到了还使用预定义的命名约定调用方法.
例如.triggerMethod('foo')将会通知onFoo()
例如.triggerMethod('foo:bar')将会通知onFooBar()
| 归档时间: |
|
| 查看次数: |
2841 次 |
| 最近记录: |