【发布时间】:2014-07-25 06:10:01
【问题描述】:
目前dojo使用on方法将事件连接到处理程序。
btn = new Button();
btn.on('click', function () {console.log('do something');});
当按钮被点击时,这将调用附加的函数。
但是,根据文档,删除现有处理程序应通过以下方式完成
handler = btn.on('click', function () {console.log('do something');});
handler.remove();
这不是我想要删除事件处理程序的方式。
我不会将处理程序引用存储在任何地方。但我想通过添加一个新的“点击”事件
btn.on('click', function () {console.log('do something different');});
以便它替换现有的“点击”事件处理程序并添加一个新的。
有什么方法可以实现我想要的吗?
谢谢!
【问题讨论】:
-
快速浏览一下 Dojo 源代码让我怀疑这是不可能的。围绕
on编写自己的包装器可能不会太难,它可以将处理程序存储在一种映射中,但这有其自身的问题(即,任何你存储的引用都不能是垃圾集)。您可能需要找到一种方法来存储处理程序。 -
@ChrisHayes 感谢您的评论。因为存储选项不是不可能的,所以我将只存储引用,然后在必要时实现包装器
标签: javascript events dojo