当设置$ locationProvider.html5Mode(true).hashPrefix('!')时,Angular.js在URL上添加#%2F

时间:2014-08-11 18:23:15

标签: angularjs

配置完成后:$locationProvider.html5Mode(true).hashPrefix('!') 当我在浏览器(chrome)上输入url:www.example.com/search并按Enter键时,它会变为:www.example.com/#%2Fsearch然后转到主页。

当我点击<a href="/search" />之类的链接然后点击它的工作。 如果我删除.hashPrefix('!'),那么也可以正常工作。 但我需要hashPrefix('!')

任何想法我怎么能解决这个问题?

3 个答案:

答案 0 :(得分:5)

这发生在我身上,因为我的所有链接上都有一个“#”,就像在www.example.com/search/#/xxx/yyy中一样。点击后,您将转到www.example.com/search/#%2Fxxx%2Fyyy。所以我把它们删除了,问题就消失了。

答案 1 :(得分:5)

我知道这是一个老帖子,问题已经解决了。我对我正在使用的应用程序遇到了同样的问题,但就我而言,我们应该保留'#'。所以,我所做的就是添加以下内容:

$locationProvider.html5Mode(false).hashPrefix('');

如果你还没有修改你的.config参数,请不要忘记,如下所示:

.config(function($routeProvider, $locationProvider)

答案 2 :(得分:-1)

Angular.module('app', ['ngRoute']).config(function($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true);  
    $locationProvider.hashPrefix('!');
    $routeProvider.when("/", {
        templateUrl : "templates/home.html"
    }).when('/register',{
         templateUrl : "http://localhost:3000/templates/register.html"
    })
// use the HTML5 History API


});;