gpt4 book ai didi

javascript - 在自定义指令的链接函数中使用 $document.off

转载 作者:行者123 更新时间:2023-11-30 00:34:28 24 4
gpt4 key购买 nike

我正在使用 AngularJS 1.3.8。

在自定义指令的 link 函数中,我有以下代码:

$document.on("keydown", function(event)
{
HandleKeys(event);
});

scope.$on("$destroy", function ()
{
$document.off("keydown", HandleKeys);
});

$document.on 按预期工作并且 keydown 事件已注册。 scope.$on 事件也会被调用(当然是在作用域被破坏后),但是 $document.off("keydown", HandleKeys); - 线不起作用。 “不起作用”意味着 keydown 事件仍然被注册。

如果我删除 HandleKeys 参数以具有以下行,它确实有效:

$document.off("keydown");

这不是我想要的,因为我想专门取消绑定(bind) HandleKeys 函数。有没有人知道为什么这对我不起作用?

最佳答案

那是因为您正在注册匿名处理程序并取消注册 HandleKeys。它不会注销您为 keydown 注册的原始处理程序(匿名函数)。您还需要提供相同的函数引用以取消注册,因此使用匿名函数没有帮助。

所以改变:-

$document.on("keydown", function(event){
HandleKeys(event);
});

$document.on("keydown", HandleKeys);

当您执行 $document.off("keydown") 时它会起作用,因为它会取消注册所有附加到文档的 keydown 事件处理程序,这无论如何都是一件坏事因为您最终将注销由其他组件附加的任何其他按键处理程序。

关于javascript - 在自定义指令的链接函数中使用 $document.off,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785398/

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