AngularJS将Hashbang重定向到Hashban感叹号?

时间:2017-06-07 08:42:59

标签: angularjs angular-ui-router

目前我正在尝试将我的ui-router从简单的Hashbang Prefix #!移到#但是如果我将locationProvider更改为它:

$locationProvider.hashPrefix('!');

如果我尝试通过旧网址访问它,它将始终返回404。 因此,如果有人有#/customer/list的超链接,它会重定向到404或默认页面,有没有办法将其重定向到#!/customer/list? (我实际上有很多路线,所以它应尽可能自动化。)

1 个答案:

答案 0 :(得分:0)

您可以使用$stateChangeStart执行此操作,如下所示:

$rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
    if (/\#(?!\!)/.test(toState)) {
        e.preventDefault();
        toState.replace("#","#!");
        $state.go(toState);
    } else {
        angular.noop;
    }
});

编辑:

没试过。但是,希望它有效:

$transitions.onStart({}, function(a) {
    var toState = a.$to().url.pattern;
    if (/\#(?!\!)/.test(toState)) {
      toState.replace("#", "#!");
      $state.go(toState)
    } else {
      angular.noop;
    }
});

一切顺利。