2012-06-19 26 views
83

Tôi đang cố triển khai pushstate của html5 thay vì # navigation được Angularjs sử dụng. Tôi đã thử tìm kiếm google cho một câu trả lời và cũng đã cố gắng phòng chat irc góc cạnh không có may mắn được nêu ra.Sử dụng HTML5 pushstate trên angular.js

Đây là tôi 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(); 
    } 
} 

app.js

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' 
      }); 
    }]) 

Trả lời

128

Tiêm $ locationProvider vào cấu hình của bạn, và thiết lập $locationProvider.html5Mode(true).

http://docs.angularjs.org/api/ng.$locationProvider

đơn giản ví dụ:

JS:

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> 
+0

Tôi có thể nhìn thấy một mẫu mã cho điều này khi có ấy đã cấu hình() cho routeProvider? Bạn không chắc chắn nếu tôi được tạo ra một cấu hình mới() cho điều này hoặc thêm nó vào đầu tiên như là một mảng của cấu hình, và cũng không chắc chắn những gì configFn nên được (http://docs.angularjs.org/api /angular.module) –

+0

Tôi đã thực hiện tương tự nhưng khi tôi nhấp/điện thoại /: phoneId url mẫu trở thành điện thoại/partials/phone-detail.html và tab net firebug hiển thị trang html không tìm thấy –

+0

Tôi cũng không tìm thấy trang bất cứ khi nào tôi điều hướng đến một url nhất định trong trình duyệt (ví dụ: '/ home' thay vì'/'). Bạn đã thử bật html5 cho trang web của riêng mình chưa? – drozzy

Các vấn đề liên quan