什么#!在ui.router中意味着什么?

Kah*_*una 6 angularjs angular-ui-router

我正在使用Angular ui.router来浏览我的应用程序.通常,网址应如下所示:

http://localhost:8001/#/start
Run Code Online (Sandbox Code Playgroud)

但就我而言,它看起来像这样:

http://localhost:8001/#!/start
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

我也认识到如果我从这个站点调用一个与我的起始页不同的URL,我总是被重定向,因为URL似乎无效.

mainApp.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
'use strict';
$urlRouterProvider.otherwise('start');
$stateProvider
    .state('start', {
        url: '/start',
        templateUrl: 'views/start.html'
    })
    .state('registration-activate', {
        url: '/registration/activate/{activationKey}',
        templateUrl: 'views/registration-activation.html'
    })
    ;
    }]);
Run Code Online (Sandbox Code Playgroud)

每当我尝试调用localhost:8001 /#/ registration/activate/xyz时,我都会被重定向到起始页面.

Pri*_*jee 0

如果浏览器是HTML5浏览器,AngularJS会将其重定向到#!

否则就只是#

请阅读此处的文档$location了解有关发生这种情况的原因的更多信息。

  • 在旧版浏览器中打开常规 URL -> 重定向到 hashbang URL
  • 在现代浏览器中打开 hashbang URL -> 重写为常规 URL