我在更改路线时遇到有关$interval功能的问题.
这是代码:
x = 2; var multiply = function () { x = x * 2; if (x == 134217728) { $interval.cancel($scope.stop); $scope.stop = 0; } } $scope.Result = function () { $scope.stop = $interval(multiply,1000); } $scope.Result();
当x <134217728时,我改变路线以移动到另一页面.问题是路由更改后$interval不会停止.我将promise存储在$scope模型中的变量stop中.我认为$scope在路由改变后不会破坏,这就是$interval继续的原因. 我该如何解决这个问题?
你可以使用$interval.cancel($scope.stop);在控制器/服务中调用$locationChangeSuccess时.
例如.
controller('MyController',function($rootScope,$interval) { $scope.stop = $interval(yourOperation,1000); var dereg = $rootScope.$on('$locationChangeSuccess',function() { $interval.cancel($scope.stop); dereg(); }); function yourOperation() {} };