这是我的代码:
$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”,因为他以正确的链接开始。
有人可以帮我吗?
非常感谢!!
答案 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();
}
});
});