我正在使用Javascript命令:setInterval。我喜欢在用户离开页面时停止它。
该代码似乎运行良好:http : //jsfiddle.net/PQz5k/
它检测用户何时离开页面。当用户单击链接以转到其他HTML页面或URL,或者用户重新加载页面时,它将执行Javascript代码。
但是,当我从一个AngularJS模板转到另一个模板时,它不起作用。例如,如果我在template1.html,我希望当用户离开template1.html转到template2.html时,Javascript代码在Controller1.js中执行某些操作。AngularJS中的以下代码等效于什么?:
$(window).on('beforeunload', function() { return 'Your own message goes here...'; });
我认为您有两个控制器,每个模板一个,如下所示:
function Controller_1($scope...){ ... } function Controller_2($scope...){ ... }
好吧,当您从一个模板切换到另一个模板时,会触发一个名为$ destroy的事件,您可以在此处进行阅读:http://docs.angularjs.org/api/ng.$rootScope.Scope#$destroy
假设我正在从具有Controller_1的模板切换到具有Controller_2的模板。Controller_1有一个我想停止的间隔。您可以使用以下方法完成此操作:
function Controller_1($scope, $interval...){ var myInterval = $interval(...); $scope.$on("$destroy", function(){ $interval.cancel(myInterval); }); }
这意味着,当Controller_1的$ scope被销毁时,将调用该事件并清除该间隔。