为ui-router 添加重定向state 功能

  ui-router 默认是只有重定向url 的功能的,没有重定向state 功能。ui-router 提供一个$urlRouterProvider service,它里面有otherwise 和when 两个方法可以进行重定向;但这两个都是判断url的,并不是判断state。

  根据url 来重定向的话,有点繁琐;于是我谷歌了一下,在stackoverflow 上找到了解决办法:在初始化的时候,监听$stateChangeStart 事件;在state 发生改变的时候,检查一下该state 有没有配置redirectTo 属性,有的话就导向过去。

$rootScope.$on('$stateChangeStart', function(evt, to, params) {
    if (to.redirectTo) {
        evt.preventDefault();
        $state.go(to.redirectTo, params, { location: 'replace' })
    }
});

参考

Redirect a state to default substate with UI-Router in AngularJS

您的浏览器已过时

要正常浏览本网站请升级您的浏览器。现在升级

×