在AngularJS中停止控制器上的超时

sub*_*ero 9 angularjs

我在AngularJS控制器中有这样的函数

$timeout($scope.loadPosts, 5000); // pull every 5 seconds
Run Code Online (Sandbox Code Playgroud)

当我离开控制器(到另一个视图)时,如何停止超时并最终销毁控制器,使其不再运行?

sub*_*ero 17

我能够通过监听$ destroy事件来解决它,如下所示:

var pull = $timeout($scope.loadPosts, 5000); // pull after 5 seconds

$scope.$on('$destroy', function(){
  $timeout.cancel(pull);
});
Run Code Online (Sandbox Code Playgroud)