2013-07-07 12 views
70

Moja aplikacja Angular pozwala użytkownikowi załadować element, a gdy tak się stanie, chciałbym ustawić ciąg zapytania, który będzie zawierał identyfikator elementu, aby użytkownik odświeżył stronę (lub chciał do niej linkować), URL jest już ustawione (jest już kod w miejscu, który ładuje element, jeśli Id jest obecny w $ routeParams).Jak ustawić parametr zapytania w AngularJS bez wykonywania trasy?

Jak ustawić ten parametr zapytania bez powodowania trasy? Na stronie znajdują się inne rzeczy, które zostaną zresetowane (w tym wtyczka, która będzie musiała przeładować wszystkie dane), jeśli dojdzie do wyznaczenia trasy, dlatego ważne jest, aby zmienił się tylko parametr zapytania.

W skrócie, gdy załadować pozycję 123, wszystko chcę się zdarzyć, że zmiany URL z:

www.myurl.com/#/Items

do:

www.myurl.com/#/Items?id=123

bez routin g ma miejsce.

Jaki jest najlepszy sposób na zrobienie tego?

Odpowiedz

161

W konfiguracji $routeProvider ustawić reloadOnSearch false:

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

iw użytku kontrolera $location.search() ustawić id param:

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

miałem przy ustalaniu zapytanie jakieś naprawdę dziwne zachowanie string''reloadOnSearch: false''' był dla mnie kluczem. –

Powiązane problemy