我熟悉角度中的"$urlRouterProvider.otherwise('{route here}')"
语法,以便在Angular UI-Router中用作catch all。
我想知道的是 - 有没有办法根据错误输入路线时的父状态进行条件“否则”路由?
例如,假设我有以下配置:
$stateProvider
.state('core', {configuration here})
.state('core.page1', {configuration here...})
.state('dashboard', {configuration here})
.state('dashboard.page1', {configuration here})
$urlRouterProvider.otherwise('/core/page1');
我希望发生的是,只要输入了 "/core/{route here}"
的路线,
如果它与任何当前状态都不匹配,则返回'/ core / page1',
并且只要输入的路线 "/dashboard/{route here}"
与任何当前状态都不匹配,就可以返回 "/dashboard/page1"
。
任何人都有这方面的经验,或者我是如何实现这一目标的? Angular中是否有内容允许这种行为?
提前致谢!
答案 0 :(得分:17)
如图所示
.otherwise()
不一定是字符串(网址)......它可能是一个明智的决策者:
$urlRouterProvider.otherwise(function($injector, $location){
var state = $injector.get('$state');
if(....)
state.go('core');
else(...)
state.go('dashboard');
...
return $location.path();
});
文档:
$urlRouterProvider.otherwise(rule)
定义请求无效路由时使用的路径。
string - 您要重定向到的网址路径或返回网址路径的功能规则。
函数版本传递了两个参数:$ injector和$ location services,并且必须返回一个url字符串。