AngularJS何时以及否则使用UI Rout

时间:2016-11-29 11:07:44

标签: angularjs angular-ui-router

我是新学生。 我的UI Route路线有问题。

这是我的代码:

  $urlRouterProvider
    .when('/GRN', '/GRN/Produtos')
    .when('/Executivo', "Executivo/Produtos")
    .otherwise("/NotFound")

我想这样做:

When -> /GRN/SOME_WRONG_LINK -> go to /GRN/Produtos
When -> /Executivo/SOME_WRONG_LINK -> go to /Executivo/Produtos
When -> /SOME_WRONG_LINK -> Go to NotFound

基本上我想要如果用户开始输入正确的URL(在本例中为GRN或Executivo),他会转到此链接的一个主页面,而不是“NotFound”,因为他以正确的链接开始。

有人可以帮我吗?

非常感谢!!

1 个答案:

答案 0 :(得分:2)

使用$routeProvider

由于您在问题中使用了$routeProvider

你可以使用,

.c.run(function($rootScope,$location,$state) {

$rootScope.$on( '$stateChangeStart', function(e,toState,toParams,fromState,fromParams) {

    if( $location.path().search('GRN') > -1)
    {
        $state.go('GRN_Produtos');
        event.preventDefault();     
    }

    if( $location.path().search('Executivo') > -1)
        $state.go('Executivo_Produtos');
        event.preventDefault();     
    }

    $urlRouterProvider.otherwise("/");

});    

}); onfig(['$ routeProvider',function($ routeProvider){       $ routeProvider

  .when('/GRN',{redirectTo:'/GRN/Produtos'})  

  .when('/Executivo',{redirectTo:'/Executivo/Produtos'})  

  .otherwise({redirectTo: '/NotFound'}); 
}])

redirectTo

{(string | Function)} =>用于更新$ location路径并触发路由重定向的值。

Here is the reference od redirectTo

使用$stateProvider

假设您的州如下,

.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
    $stateProvider
        .state('GRN_Produtos', {
            url: '/GRN/Produtos',
            templateUrl: '',
            controller: ''
        })
        .state('Executivo_Produtos', {
            url: '/Executivo/Produtos',
            templateUrl: '',
            controller: ''
        })
      .state('otherwise', {
            url: '/notfound',
       });

    }])

现在您可以在运行块中重定向

  .run(function($rootScope,$location,$state) {

    $rootScope.$on( '$stateChangeStart', function(e,toState,toParams,fromState,fromParams) {

        if( $location.path().search('GRN') > -1)
        {
            $state.go('GRN_Produtos');
            event.preventDefault();     
        }

        else if( $location.path().search('Executivo') > -1)
            $state.go('Executivo_Produtos');
            event.preventDefault();     
        }
        else
        {
            $state.go('otherwise');
            event.preventDefault();     
        }


    });    
});