Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angular中正确解除窗口事件的绑定_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 如何在angular中正确解除窗口事件的绑定

Javascript 如何在angular中正确解除窗口事件的绑定,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,所以现在在我的控制器中,可能很快就会转到指令,我有一行代码使用jQuery绑定到窗口上的滚动事件。然后,它执行一个函数,该函数执行一些检查,以查看是否应该突出显示某些元素 问题是,我想在页面更改且控制器消失时正确解除此事件的绑定。在angular中解开事件的正确方法是什么 我知道jQuery的.off方法,我只是想知道应该在何时何地进行调用。Angular在销毁作用域时提供$destroy事件 $scope.$on('$destroy', function() { //jQuery.of

所以现在在我的控制器中,可能很快就会转到指令,我有一行代码使用jQuery绑定到窗口上的滚动事件。然后,它执行一个函数,该函数执行一些检查,以查看是否应该突出显示某些元素

问题是,我想在页面更改且控制器消失时正确解除此事件的绑定。在angular中解开事件的正确方法是什么

我知道jQuery的.off方法,我只是想知道应该在何时何地进行调用。

Angular在销毁作用域时提供$destroy事件

$scope.$on('$destroy', function() {
    //jQuery.off
});

但是,正如您所说的,这应该转移到一个指令中,angular还为html元素提供了一个$destroy方法。

有指令的作用域吗?因为我绑定到窗口,而不是一个element@LordZardeck是的,指令中有作用域,这就是控制器和链接函数都将作用域作为参数的原因。然而,对于指令,最好是在“$destroy”上使用元素@LordZardeck我刚刚注意到您绑定到窗口事件,在这种情况下,您不会使用元素。在“$destroy”方法上,但您仍然可以使用作用域。$on“$destroy”方法上