如何在AngularJS中的X秒后自动重定向?

时间:2014-10-14 19:04:19

标签: angularjs

在AngularJS中执行此操作的正确方法是什么?我没有找到任何简单的答案。

我想:

  1. 加载页面
  2. 等待X秒
  3. 在这些秒后自动重定向到另一个页面。
  4. 注意:我正在使用ui-routing(状态)来执行重定向

    感谢。

5 个答案:

答案 0 :(得分:7)

这有效(感谢PSL):

.controller('SeeYouSoonCtrl', ['$scope', '$state', '$timeout',
                                function($scope, $state, $timeout) {

    $timeout(function() {
      $state.go('AnotherState');
      }, 3000);

    }])

答案 1 :(得分:2)

它也可以使用$location代替$state

JS

app.controller('SeeYouSoonCtrl', function($scope, $location, $timeout) {

    $timeout(function() {
      $location.path('/nextsite');
      }, 3000);

    });

答案 2 :(得分:0)

基本上,他们是双向$location$timeout。这将解决您的问题:

  
      
  1. $timeout方法:
  2.   

代码:

  .controller('HomeController', ['$scope', '$state', '$timeout',
                                function($scope, $state, $timeout) {    
   $timeout(function() {
      $state.go('anotherstate');
      }, 4000);

    }])
  
      
  1. $location方法:
  2.   

代码:

.controller('HomeController', ['$scope', '$state', '$location',
                                    function($scope, $state, $location) {    
      $location.path('/appurl');

        }])

答案 3 :(得分:0)

你可以简单地重定向到aby其他组件:

打开你的filename.component.file并添加这个功能

$timeout(function() {
      $location.path('/login');
      }, 3000);

});

,您的页面将在3秒后重定向到登录组件

答案 4 :(得分:0)

如果有人要在angular 2 +中寻找相同的功能。

import { Router } from '@angular/router';

constructor(private router: Router) {}

ngOnInit() {
    // do init at here for current route.

    setTimeout(() => {
        this.router.navigate(['nextRoute']);
    }, 5000);  //5s
}