例如:
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可能有问题,但我找不到解决方案。
谢谢!
答案 0 :(得分:7)
Hashbang模式
Hashbang模式是AngularJS用来为Angular提供深层链接功能的技巧 应用。在hashbang模式(html5模式的后备)中,URL路径采用前置#字符。 它们不会重写标记,也不需要任何服务器端支持。 Hashbang mode是AngularJS使用的默认模式,否则不会被告知。 hashbang URL如下所示:
要明确并配置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"
});