2013-09-26 15 views

Odpowiedz

13

znalazłem mogę to zrobić przez zmianę parametrów ciąg kwerendy bez przeładowania strony za pomocą odpowiedź o reloadOnSearch z here:

$routeProvider 
    .when('/items', { 
    controller: 'ItemsCtrl', 
    templateUrl: '/templates/items', 
    reloadOnSearch: false 
    }, 
    ... 
); 

A potem, od tej samej odpowiedzi, ustawienie ciąg kwerendy przy użyciu:

$location.search('id', 123); 

i wreszcie wykrywania trasy zmienia za pomocą odpowiedź od here:

$scope.$on('$routeUpdate', function(){ 
    $scope.sort = $location.search().sort; 
    $scope.order = $location.search().order; 
    $scope.offset = $location.search().offset; 
}); 
+0

Dokładnie tego, czego szukałem. Dzięki! – LT86

5

Możesz wyłączyć tryb HTML5 za pomocą $locationProvider.html5Mode(false).

Następnie wystarczy użyć adresów URL hashbang takich jak <a href="#!/search">Search</a>, zostaną one dodane do historii przeglądarki.

+1

Czy można zmienić trasę bez konieczności ponownego uruchamiania sterownika? – adam0101

2

Nie sądzę, aby można było dodawać wpisy do historii przeglądarki bez użycia hasła HTML5 (przynajmniej bez zmiany aktualnej lokalizacji).

MDN strona omawia wprowadzanie pushState i jak umożliwia to nowe funkcjonalności (co oznacza, że ​​nie było wcześniej możliwe): https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

EDIT: Jeśli powodem nie można używać HTML5 pushState dlatego wsparcia przeglądarki, zobacz ten PolyFill: https://github.com/browserstate/history.js

1

Wzdłuż z ponumerowanym poniżej reloadOnSearch w celu śledzenia zdarzenia zmiany lokalizacji.

$scope.$on('$locationChangeSuccess', function() { 
     $scope.sort = $location.search().sort; 
     $scope.order = $location.search().order; 
     $scope.offset = $location.search().offset; 
    }); 

Choć może to pomóc komuś.

Powiązane problemy