$ location哈希前缀

lee*_*ell 20 angularjs

我刚刚开始使用Angular,所以这可能是一个常见的新手错误,但我正在尝试实现以下url格式:

http://myapp.localhost/index.html#!/about
Run Code Online (Sandbox Code Playgroud)

我认为应该是Angular的默认值?

这是我的配置:

angular.module('App', []).config(function($routeProvider, $locationProvider, VIEWS_ROOT) {
    $locationProvider.html5Mode(false);
    $locationProvider.hashPrefix = '!';

    // Routing
    $routeProvider.when('/', {templateUrl: './welcome.html', controller: 'WelcomeController'});
   $routeProvider.when('/about', {templateUrl: './about.html', controller: 'AboutController'});
})
.run(function($rootScope) {
    //...
});
Run Code Online (Sandbox Code Playgroud)

在我的HTML中,我有一个简单的锚,如下所示:

<a href="#!/about">About</a>
Run Code Online (Sandbox Code Playgroud)

但是,当我单击该锚点时,生成的结果URL是:

http://myapp.localhost/index.html#/!/about
Run Code Online (Sandbox Code Playgroud)

这显然无法匹配我的任何路线...有点难以理解这里发生的事情,或者我做错了什么.我在vhost下运行我的本地Apache实例.mod_rewrite没有任何进展 - 所以看起来Angular正在这样做.

lee*_*ell 22

这是设置hashPrefix的方法,而不是属性. $locationProvider.hashPrefix('!');