在 angular.js 上使用 HTML5 pushstate

我正在尝试实现 html5的 pushstate,而不是 Angularjs 使用的 # 导航。我试过在谷歌上搜索答案,也试过棱角分明的 IRC 聊天室,但还没有找到。

这是我的 controllers.js:

function PhoneListCtrl($scope, $http) {
$http.get('phones/phones.json').success(function(data) {
$scope.phones = data;
});
}


function PhoneDetailCtrl($scope, $routeParams) {
$scope.phoneId = $routeParams.phoneId;
}


function greetCntr($scope, $window) {
$scope.greet = function() {
$("#modal").slideDown();
}
}

应用程序

angular.module('phoneapp', []).
config(['$routeProvider', function($routeProvider){
$routeProvider.
when('/phones', {
templateUrl: 'partials/phone-list.html',
controller: PhoneListCtrl
}).
when('/phones/:phoneId', {
templateUrl: 'partials/phone-detail.html',
controller: PhoneDetailCtrl
}).
otherwise({
redirectTo: '/phones'
});
}])
42913 次浏览

在配置中注入 $locationProvider,并设置 $locationProvider.html5Mode(true)

Http://docs.angularjs.org/api/ng.$locationprovider

举个简单的例子:

约翰逊:

myApp.config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/page1', { template: 'page1.html', controller: 'Page1Ctrl' })
.when('/page2', { template: 'page2.html', controller: 'Page2Ctrl' })
});

HTML:

<a href="/page1">Page 1</a> | <a href="/page2">Page 2</a>