Angular中的条件“否则”路由

时间:2015-06-24 11:52:48

标签: javascript angularjs angular-ui-router

我熟悉角度中的"$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中是否有内容允许这种行为?

提前致谢!

1 个答案:

答案 0 :(得分:17)

如图所示

How not to change url when show 404 error page with ui-router

.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字符串。