How to redirect to another page using AngularJS?

前端 未结 12 672
深忆病人
深忆病人 2020-11-27 11:04

I am using ajax call to perform functionality in a service file and if the response is successful, I want to redirect the page to another url. Currently, I am doing this by

12条回答
  •  时光说笑
    2020-11-27 11:45

    A good way to do this is using $state.go('statename', {params...}) is faster and more friendly for user experience in cases when you don't have to reload and bootsraping whole app config and stuff

    (function() {
        'use strict';
    
        angular
            .module('app.appcode')
            .controller('YourController', YourController);
    
        YourController.$inject = ['rootURL', '$scope', '$state', '$http'];
    
        function YourController(rootURL, $scope, $state, $http) {
    
            $http({
                    url: rootURL + 'app-code/common.service.php',
                    method: "POST",
                    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                    dataType: 'json',
                    data:data + '&method=signin'
    
                }).success(function (response) {
                    if (response['code'] == '420') {
    
                        $scope.message = response['message'];
                        $scope.loginPassword = '';
                    } else if (response['code'] != '200') {
    
                        $scope.message = response['message'];
                        $scope.loginPassword = '';
                    } else {
                        // $state.go('home'); // select here the route that you want to redirect
                        $state.go(response['state']); // response['state'] should be a route on your app.routes
                    }
                })
        }
    
    });
    

    // routes

    (function() {
        'use strict';
    
        angular
            .module('app')
            .config(routes);
    
        routes.$inject = [
            '$stateProvider',
            '$urlRouterProvider'
        ];
    
        function routes($stateProvider, $urlRouterProvider) {
            /**
             * Default path for any unmatched url
            */
            $urlRouterProvider.otherwise('/');
    
            $stateProvider
                .state('home', {
                    url: '/',
                    templateUrl: '/app/home/home.html',
                    controller: 'Home'
                })
                .state('login', {
                    url: '/login',
                    templateUrl: '/app/login/login.html',
                    controller: 'YourController'
                })
                // ... more routes .state
       }
    
    })();
    

提交回复
热议问题