我在更改路线时遇到有关$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() {}
- };