使用JavaScript从已发布的事件中取消订阅

时间:2010-12-15 20:53:10

标签: javascript javascript-events widget publish-subscribe

我有一个网站,用户可以动态添加小部件。这些小部件使用Peter Higgins pub / sub插件来$。(订阅)来自另一个'核心'模块的I $。(发布)事件。

我在自己的名字空间中有这样的小部件,如下所示: km.widget.name1, km.widget.name2, 等

因此$。(订阅)创建的句柄不是全局的。

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

另外,我如何知道取消订阅哪个小部件?

2 个答案:

答案 0 :(得分:0)

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

  

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

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

答案 1 :(得分:0)

之前我没有使用过pubsub插件,但我只是看了the source code,看起来您可以取消订阅与订阅完全相同,只使用$.unsubscribe(...)而不是{{ 1}}。

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