【问题标题】:Unsubscribing from a published event with JavaScript使用 JavaScript 取消订阅已发布的事件
【发布时间】:2010-12-15 20:53:09
【问题描述】:

我有一个用户可以动态添加小部件的网站。这些小部件使用 Peter Higgins pub/sub 插件将$.(subscribe) 用于我从另一个“核心”模块$.(publish) 的事件。

我在自己的命名空间中有这样的小部件:

km.widget.name1,
km.widget.name2,
等等

所以$.(subscribe) 创建的句柄不是全局的。

当用户决定从他们的自定义页面中删除小部件时,我不知道如何取消订阅这些小部件。

另外,我怎么知道要取消订阅哪个小部件?

【问题讨论】:

  • 您找到解决此问题的好方法了吗?我们很快就会遇到同样的问题。看看你是如何解决的会很有趣。

标签: javascript widget dom-events publish-subscribe


【解决方案1】:

这并不能直接解决您的问题,但它可能会很好地帮助您。 This is a recent blog 由 Sam Clearman 撰写。他描述了一种不使用该插件来处理发布/订阅事件的方法:

jQuery 自定义事件提供了一种内置方式来使用发布订阅模式,其功能与 Higgin 的 pub/sub 插件在功能上和语法上非常相似:只需将观察者绑定到文档。

这样做,您可能能够解决您当前的问题。

【讨论】:

  • 我以前看过这篇文章,但我不相信这是答案。
【解决方案2】:

我之前没有使用过 pubsub 插件,但我只是看了一眼the source code,看起来你可以像订阅一样取消订阅,只需使用$.unsubscribe(...) 而不是$.subscribe(...)

这是您已经知道的事情,并且问题是由您的小部件命名空间引起的吗?无论如何,我真的不确定你所说的命名空间是什么意思,因为 JavaScript 不支持真正的命名空间(只是对象 - 我猜你正在使用它)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多