Angular JS从URL中删除散列不起作用

时间:2015-01-16 08:00:05

标签: angularjs angularjs-routing

我正试图摆脱看起来像http://example.com/#/album/0的网址,让它看起来更像http://example.com/album/0

我有以下代码

(function() {
var app = angular.module('chp', ['ngRoute', 'projectControllers']);

app.config(['$routeProvider', '$locationProvider',
  function($routeProvider, $locationProvider) {
    $routeProvider.
      when('/', {
        templateUrl: 'partials/directory.html',
        controller: 'ProjectsCtrl'
      }).
      when('/album/:id', {
        templateUrl: 'partials/album.html',
        controller: 'ProjectDetailCtrl'
      }).
      otherwise({
        redirectTo: '/'
      });

      $locationProvider.html5Mode(true);
  }]);

var projectControllers = angular.module('projectControllers', []);

projectControllers.controller('ProjectsCtrl', ['$scope', '$http',
  function ($scope, $http) {
    $scope.projects = albums;
    $scope.filters = { };
  }]);

projectControllers.controller('ProjectDetailCtrl', ['$scope', '$routeParams', '$sce',
  function($scope, $routeParams, $sce) {
    $scope.project = albums[$routeParams.id];
})();

但是当我在显示的三个位置添加$ locationProvider时,这会导致我的应用完全中断。知道为什么这不适合我吗?我也在jquery和angular.js之后包含angular-route.js,这样就不能解决问题了

1 个答案:

答案 0 :(得分:1)

一眼就看起来它对我来说很合适,但你必须确保你的服务器设置为为任何路由提供http://example.com/index.html,否则它会在引导你的角度应用程序之前尝试加载http://example.com/album/0/index.html 。启用html5后你看到了什么? 404找不到?控制台错误?

您可能还需要添加 index.html文件中<base href="/" />内的<head></head>