gpt4 book ai didi

javascript - 是否有经验法则来决定何时在 Backbone.Marionette 中使用 trigger 或 triggerMethod?

转载 作者:可可西里 更新时间:2023-11-01 02:54:39 25 4
gpt4 key购买 nike

我正在玩 Backbone.jsBackbone.Marionette 我想知道 trigger触发方法

特别是,是否有任何经验法则来决定何时使用前者或后者?

例如,在我看来,事件对于 DOM 元素与其 View 之间的通信很有用。

triggerMethod 在 Marionette 中用于更新级联不同的组件,例如布局调用 show 方法给它的子元素(子元素响应 onShow)。所以,对我来说,这与在其上调用直接方法相同。这是真的吗?

触发器呢?

提前致谢。

最佳答案

没有太大的区别,这只是取决于你想做什么......

显然,如果您只想触发一个事件,您可以使用 trigger。但是使用 trigger 您还创建了一个“自制”的 triggerMethod 实现:trigger 事件,然后有一个将调用您想要的函数的监听器。

那么 triggerMethod 呢?如上所述,它会触发一个事件并调用一个方法。因此,如果您的唯一目标是首先调用该方法,则不一定需要使用 triggerMethod

那么为什么要使用 triggerMethod 呢?因为它为您提供了“钩子(Hook)”来添加事件监听器的功能。在我的 book on Marionette ,例如,在 https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/edit/edit_controller.js#L24 中有一个 triggerMethod 调用在表单上显示错误消息。只需调用

view.onFormDataInvalid(contact.validationError);

但是如上所述,triggerMethod 给了我们一个“钩子(Hook)”以备后用。例如,假设我想添加用户错误日志记录:我可以简单地向我的 View 添加一个监听器:

initialize: function(){
this.on("form:data:invalid", function(validationError){
// log error here
}
}

可以在不影响其余代码的情况下添加此附加功能,因为我们使用了 triggerMethod 而不是直接方法调用。另外,后面测试起来也比较容易(小测试,有单点故障):

  • 测试当用户输入错误信息时是否触发“form:data:invalid”事件
  • 测试当“form:data:invalid”事件被触发时,错误被记录
  • 等等

关于javascript - 是否有经验法则来决定何时在 Backbone.Marionette 中使用 trigger 或 triggerMethod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21052020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com