HTML-Quellcode
<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>
AngularJS-Quellcode
<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>
Hier geben die Variablen loc
und loc1
beide den Test als Ergebnis für die obige URL zurück. Ist das der richtige Weg?
javascript
angularjs
routeparams
praveenpds
quelle
quelle
Antworten:
Ich weiß, dass dies eine alte Frage ist, aber angesichts der spärlichen Angular-Dokumentation habe ich einige Zeit gebraucht, um dies zu klären. Der RouteProvider und routeParams sind der richtige Weg. Die Route verbindet die URL mit Ihrem Controller / View und die routeParams können an den Controller übergeben werden.
Schauen Sie sich das Angular Seed- Projekt an. In der app.js finden Sie ein Beispiel für den Routenanbieter. Um Parameter zu verwenden, hängen Sie sie einfach wie folgt an:
Dann injizieren Sie in Ihren Controller $ routeParams:
Mit diesem Ansatz können Sie Parameter mit einer URL wie " http://www.example.com/view1/param1/param2 " verwenden.
quelle
});
sein sollte}]);
/view/1/2?other=12
mit$routeParams.other
Während Routing in der Tat eine gute Lösung für das Parsen von URLs auf Anwendungsebene ist, möchten Sie möglicherweise den
$location
Dienst auf niedrigerer Ebene verwenden , der in Ihren eigenen Dienst oder Controller integriert ist:Diese einfache Syntax funktioniert für
http://example.com/path?myParam=paramValue
. Allerdings nur, wenn Sie das konfiguriert haben$locationProvider
im HTML 5-Modus haben:Ansonsten schauen Sie sich die http://example.com/#!/path?myParam=someValue "Hashbang" -Syntax an, die etwas komplizierter ist, aber den Vorteil hat, mit alten Browsern (nicht HTML 5-kompatibel) zu arbeiten Gut.
quelle
<base href="http://example.com/en/" />
Tag in Ihremindex.html
..config(['$locationProvider', function($locationProvider) { $locationProvider.html5Mode({ enabled: true, requireBase: false }); }])
$locationProvider
, damit dies funktioniert.http://example.com/path#?someKey=someVal
, dann$location.search().someKey // => 'someVal'
Wenn Sie ngRoute verwenden, können Sie
$routeParams
in Ihren Controller injizierenhttp://docs.angularjs.org/api/ngRoute/service/$routeParams
Wenn Sie einen Angular-UI-Router verwenden, können Sie injizieren
$stateParams
https://github.com/angular-ui/ui-router/wiki/URL-Routing
quelle
$stateParams
Abfrageparameter anzuzeigen, musste ich sie beim Definieren der Zustände angeben, wie in github.com/angular-ui/ui-router/wiki/…Ich habe eine Lösung gefunden, wie man $ location.search () verwendet, um Parameter von der URL abzurufen
Zuerst in der URL müssen Sie die Syntax "#" vor den Parametern wie in diesem Beispiel setzen
"http://www.example.com/page#?key=value"
und dann setzen Sie in Ihrem Controller $ location in function und verwenden Sie $ location.search (), um den URL-Parameter für abzurufen
quelle
Wenn die bereits veröffentlichten Antworten nicht geholfen haben, können Sie es mit $ location.search () versuchen. MyParam; mit URLs http: //example.domain#? myParam = paramValue
quelle
quelle
Einfacher und einfacher Weg, um URL-Wert zu erhalten
quelle
Bei Verwendung von Angularjs mit Express
In meinem Beispiel habe ich anglejs mit Express verwendet, um das Routing durchzuführen, sodass die Verwendung von $ routeParams mein Routing durcheinander bringen würde. Ich habe den folgenden Code verwendet, um das zu erhalten, was ich erwartet hatte:
Dies erhält eine URL-Vorlage und den Pfad des angegebenen Speicherorts. Das nenne ich einfach mit:
Alles zusammen ist mein Controller:
Das Ergebnis wird sein:
Hoffe das hilft jemandem da draußen!
quelle