gpt4 book ai didi

javascript - 覆盖 Backbone.Wreqr.radio 处理程序

转载 作者:行者123 更新时间:2023-12-03 09:15:29 26 4
gpt4 key购买 nike

在我工作的公司,我们决定提取大部分 Marionette.js 代码并将它们分成几个 Rails Gem。

此时,我已成功分离 Marionette Controller 和 View 。 Marionette Controller 中的一些内容对于我们的大多数电子商务应用程序来说都是必需的,因此我将此 JavaScript 代码提取到一些 Gems 中。然后,我们将能够使用已经分成 Gems 的内容,并在必要时覆盖/扩展 Controller / View 。

对于应用程序范围内的操作,我们使用 Backbone.Wreqr 。在我们的 Gems 中找到的事件处理程序示例:

Backbone.Wreqr.radio.commands.setHandler('product', 'show', function (slug) {
API.showSingleProduct(slug);
App.navigate("/products/" + slug);
});

但是,对于我们的某些应用程序,我们需要重写此处理程序以使其能够与我们项目中的一些自定义内容一起使用。

假设我想将上面的处理程序修改为如下所示:

Backbone.Wreqr.radio.commands.setHandler('product', 'show', function (slug, color) {
API.showSingleProduct(slug, color);
App.navigate("/products/" + slug);
});

当我在我们的基础项目中添加这样的事件处理程序时,该事件将被调用两次。实际上,我只需要触发最后一个(自定义)事件处理程序。

有什么方法可以覆盖现有的 Backbone.Wreqr 事件吗?或者,每次我想要自定义以前的处理程序的行为时,我都应该删除以前的处理程序吗?

最佳答案

无需删除以前的处理程序,设置一个新的处理程序可以有效地覆盖分配给同一命名空间的任何处理程序。

您的代码应该可以注册单个处理程序,问题一定出在其他地方。

关于javascript - 覆盖 Backbone.Wreqr.radio 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31965923/

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