2012-06-19 10 views
83

Sto cercando di implementare pushstate di html5 anziché la navigazione # utilizzata da Angularjs. Ho provato a cercare google per una risposta e ho anche provato la chat room angolare irc senza fortuna ancora.Utilizzo di HTML5 pushstate su angular.js

Questo è il mio 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' 
      }); 
    }]) 

risposta

128

Iniettare $ locationProvider nella vostra configurazione, e impostare $locationProvider.html5Mode(true).

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

semplice esempio:

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

Posso vedere un esempio di codice per questo, quando c'è già config() per routeProvider? Non sono sicuro se dovrei creare una nuova config() per questo o aggiungerla al primo come una serie di configurazioni, e anche non sono sicuro di quale dovrebbe essere il configFn (http://docs.angularjs.org/api /angular.module) –

+0

Ho fatto lo stesso, ma quando clicco/telefoni /: telefonoId l'url modello diventa telefoni/parziali/telefono-detail.html e scheda firebug net mostra la pagina html non trovata –

+0

Sto anche ricevendo la pagina non trovata ogni volta che navigo verso un determinato URL nel browser (ad es. '/ home' invece di'/'). Hai provato a abilitare html5 per il tuo sito? – drozzy

Problemi correlati