我使用角度,我的网址总是有一个“!” (感叹号)

时间:2016-11-08 03:54:21

标签: angularjs angular-ui-router

例如:

http://localhost/#!/login.html

我不需要“!”。我该如何删除它?

eg:http://localhost/#/login.html

这是我的路由器代码:

  // Redirect any unmatched url
$urlRouterProvider.otherwise("/login.html");
$stateProvider.state('login', {
    url: "/login.html",
    templateUrl: "views/login.html",
    data: {pageTitle: "login", isLeft: false},
    controller: "LoginCtrl",
    resolve: {
        deps: ['$ocLazyLoad', function ($ocLazyLoad) {
            return $ocLazyLoad.load({
                name: 'myApp',
                files: [
                    'controllers/LoginCtrl.js'
                ]
            });
        }]
    }
});

我认为Angular-ui-router可能有问题,但我找不到解决方案。

谢谢!

3 个答案:

答案 0 :(得分:7)

Hashbang模式

Hashbang模式是AngularJS用来为Angular提供深层链接功能的技巧 应用。在hashbang模式(html5模式的后备)中,URL路径采用前置#字符。 它们不会重写标记,也不需要任何服务器端支持。 Hashbang mode是AngularJS使用的默认模式,否则不会被告知。 hashbang URL如下所示:

  

http://yoursite.com/#!/inbox/all

要明确并配置hashbang模式,需要在配置函数中配置 app模块

  

我们还可以配置hashPrefix,在hashbang模式下,它是   !字首。此前缀是Angular的回退机制的一部分   用于旧版浏览器。我们也可以配置这个角色。

配置hashPrefix:

angular.module('myApp', ['ngRoute'])
.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode(false);
$locationProvider.hashPrefix('!');
}]);

答案 1 :(得分:0)

$locationProvider.hasPrefix = '!';

我认为你配置了这样的$ locationProvider。移除这个以避免!

答案 2 :(得分:0)

app.config(function ($routeProvider, $locationProvider) {
            $locationProvider.hashPrefix('page');
$routeProvider.when("/home", {
                templateUrl: "templates/home.html",
                controller: "homecontroller"

            });