我有一个用户可以动态添加小部件的网站。这些小部件使用 Peter Higgins pub/sub 插件来处理来自另一个“核心”模块$.(subscribe)
的事件。$.(publish)
我在自己的名称空间中有小部件,如下所示:
km.widget.name1、
km.widget.name2
等。
所以创建的句柄$.(subscribe)
不是全局的。
当用户决定从他们的自定义页面中删除小部件时,我不知道如何取消订阅这些小部件。
另外,我怎么知道要取消订阅哪个小部件?
我有一个用户可以动态添加小部件的网站。这些小部件使用 Peter Higgins pub/sub 插件来处理来自另一个“核心”模块$.(subscribe)
的事件。$.(publish)
我在自己的名称空间中有小部件,如下所示:
km.widget.name1、
km.widget.name2
等。
所以创建的句柄$.(subscribe)
不是全局的。
当用户决定从他们的自定义页面中删除小部件时,我不知道如何取消订阅这些小部件。
另外,我怎么知道要取消订阅哪个小部件?
这并不能直接解决您的问题,但它可能会很好地帮助您。 这是Sam Clearman 最近的博客。他描述了一种在不使用该插件的情况下处理发布/订阅事件的方法:
jQuery 自定义事件提供了一种内置方法来使用发布订阅模式,其功能与 Higgin 的 pub/sub 插件在功能上等效,语法上非常相似:只需将观察者绑定到文档。
这样做,您可能能够解决当前的问题。
我之前没有使用过 pubsub 插件,但我只是看了一眼源代码,看起来你可以像订阅一样取消订阅,只需使用$.unsubscribe(...)
而不是$.subscribe(...)
.
这是您已经知道的事情,并且问题是由您的小部件命名空间引起的吗?无论如何,我不确定你所说的命名空间是什么意思,因为 JavaScript 不支持真正的命名空间(只是对象——我猜你正在使用它)。