Kod źródłowy HTML
<div ng-app="">
<div ng-controller="test">
<div ng-address-bar browser="html5"></div>
<br><br>
$location.url() = {{$location.url()}}<br>
$location.search() = {{$location.search('keyword')}}<br>
$location.hash() = {{$location.hash()}}<br>
keyword valus is={{loc}} and ={{loc1}}
</div>
</div>
Kod źródłowy AngularJS
<script>
function test($scope, $location) {
$scope.$location = $location;
$scope.ur = $scope.$location.url('www.html.com/x.html?keyword=test#/x/u');
$scope.loc1 = $scope.$location.search().keyword ;
if($location.url().indexOf('keyword') > -1){
$scope.loc= $location.url().split('=')[1];
$scope.loc = $scope.loc.split("#")[0]
}
}
</script>
Tutaj zmienne loc
i loc1
oba zwracają wynik testu dla powyższego adresu URL. Czy to właściwy sposób?
javascript
angularjs
routeparams
praveenpds
źródło
źródło
Odpowiedzi:
Wiem, że to stare pytanie, ale zajęło mi to trochę czasu, aby to rozwiązać, biorąc pod uwagę rzadką dokumentację kątową. RouteProvider i routeParams jest droga. Trasa łączy adres URL do kontrolera / widoku, a routeParams można przekazać do kontrolera.
Sprawdź projekt nasion Angular . W pliku app.js znajdziesz przykład dostawcy trasy. Aby użyć parametrów, po prostu dołącz je w następujący sposób:
Następnie do kontrolera wstrzyknij $ routeParams:
Dzięki takiemu podejściu możesz używać parametrów z adresem URL, takich jak: „ http://www.example.com/view1/param1/param2 ”
źródło
});
powinna brzmieć}]);
/view/1/2?other=12
z$routeParams.other
Chociaż routing jest rzeczywiście dobrym rozwiązaniem do analizowania adresów URL na poziomie aplikacji, możesz chcieć skorzystać z bardziej niskiego poziomu
$location
usługi, wprowadzonej we własnej usłudze lub kontrolerze:Ta prosta składnia będzie działać
http://example.com/path?myParam=paramValue
. Jednak tylko jeśli wcześniej skonfigurowałeś$locationProvider
tryb HTML 5:W przeciwnym razie spójrz na http://example.com/#!/path?myParam=someValue Składnia „Hashbang”, która jest nieco bardziej skomplikowana, ale ma tę zaletę, że działa na starych przeglądarkach (niezgodnych z HTML 5), ponieważ dobrze.
źródło
<base href="http://example.com/en/" />
tagu w twoimindex.html
..config(['$locationProvider', function($locationProvider) { $locationProvider.html5Mode({ enabled: true, requireBase: false }); }])
$locationProvider
, aby to działało.http://example.com/path#?someKey=someVal
, a następnie$location.search().someKey // => 'someVal'
Jeśli używasz ngRoute, możesz wstrzyknąć
$routeParams
do swojego kontrolerahttp://docs.angularjs.org/api/ngRoute/service/$routeParams
Jeśli używasz routera kątowego, możesz wstrzykiwać
$stateParams
https://github.com/angular-ui/ui-router/wiki/URL-Routing
źródło
$stateParams
wyświetlić parametry zapytania, musiałem je określić podczas definiowania stanów, jak pokazano w github.com/angular-ui/ui-router/wiki/…Znalazłem rozwiązanie, jak użyć $ location.search (), aby uzyskać parametr z adresu URL
najpierw w adresie URL należy wstawić składnię „#” przed parametrem takim jak ten przykład
"http://www.example.com/page#?key=value"
a następnie w kontrolerze umieść $ location w funkcji i użyj $ location.search (), aby uzyskać parametr URL dla
źródło
Jeśli już opublikowane odpowiedzi nie pomogły, można spróbować za pomocą $ location.search (). MyParam; z adresami URL http: //example.domain#? myParam = paramValue
źródło
źródło
Prosty i najłatwiejszy sposób na uzyskanie wartości adresu URL
źródło
Podczas korzystania z angularjs z express
W moim przykładzie korzystałem z angularjs z routingiem ekspresowym, więc użycie $ routeParams popsuło mi routing. Użyłem następującego kodu, aby uzyskać to, czego się spodziewałem:
Otrzymuje szablon adresu URL i ścieżkę do określonej lokalizacji. Po prostu nazywam to z:
Podsumowując, mój kontroler to:
Wynik będzie:
Mam nadzieję, że to pomoże komuś tam!
źródło