2012-06-19 16 views
83

Próbuję zastosować pushstate html5 zamiast nawigacji # używanej przez Angularjs. Próbowałem wyszukać google w poszukiwaniu odpowiedzi, a także wypróbowałem kanciastą czat irc bez szczęścia.Używanie pushstate HTML5 na angular.js

To jest mój 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' 
      }); 
    }]) 

Odpowiedz

128

Inject $ locationProvider do config i ustaw $locationProvider.html5Mode(true).

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

Prosty przykład:

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

Widziałem próbki kodu dla tego, kiedy nie ma już config() dla routeProvider? Nie jestem pewien, czy mam utworzyć nową config() dla tego lub dodając go do pierwszej jako tablicy konfiguracji, a także nie wiem, co powinien być configFn (http://docs.angularjs.org/api /angular.module) –

+0

Zrobiłem to samo, ale gdy kliknę/phone /: phoneId URL szablonu stanie się telefonem/partials/phone-detail.html i zakładka firebug net pokazuje stronę html nie znaleziono –

+0

Nie mogę również znaleźć strony za każdym razem, gdy przechodzę do danego adresu URL w przeglądarce (np. '/ home' zamiast'/'). Czy próbowałeś włączyć obsługę html5 w swojej witrynie? – drozzy

Powiązane problemy