Angular.js摆脱网址中的#

时间:2013-12-06 17:10:29

标签: javascript angularjs

我正在查看Angular的教程,我正试图摆脱URL中的哈希值。

我已经尝试将html5模式设置为true。但它似乎没有正确路由。

控制台说:

GET http://localhost:8000/partials/phone-list.html 404 (Not Found)

这是我的应用程序中的代码:

var phonecatApp = angular.module('phonecatApp', [
'ngRoute',
'phonecatControllers'
]);

phonecatApp.config(['$routeProvider', '$locationProvider',
  function($routeProvider, $locationProvider) {

  $routeProvider.
    when('/phones', {
      templateUrl: 'partials/phone-list.html',
      controller: 'PhoneListCtrl'
    }).
    when('/phones/:phoneId', {
      templateUrl: 'partials/phone-detail.html',
      controller: 'PhoneDetailCtrl'
    }).
    otherwise({
      redirectTo: '/phones'
  });
  $locationProvider.html5Mode(true);

}]);

我目前正在使用localhost并使用node来提供页面。

编辑: 我已经阅读了这个问题:Removing the fragment identifier from AngularJS urls (# symbol) 但是我的应用似乎有相同的代码。不确定我错过了什么?

1 个答案:

答案 0 :(得分:0)

不要忘记在服务器上提供/partials/phone-list.html路由的页面。不仅仅是index.html(或者你拥有的任何东西)。推送状态(html5-mode)仅在您启动应用程序时有效,否则浏览器如何知道在您发出新请求时从哪里获取javascript?

Hashbang网址不同,因为您实际上是在向同一地址发出请求,因此无需在服务器上进行任何更改。

编辑,同时通过查看第一个答案确保您的链接正常工作 ngRoute set base url for all routes