Code source 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>
Code source 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>
Ici, les variables loc
et loc1
renvoient toutes deux test comme résultat pour l'URL ci-dessus. Est-ce la bonne façon?
Je sais que c’est une vieille question, mais il m’a fallu un certain temps pour résoudre ce problème compte tenu de la faible documentation Angular. Le RouteProvider et routeParams est la voie à suivre. La route relie l'URL à votre contrôleur/vue et les routeParams peuvent être transmis au contrôleur.
Découvrez le projet graine angulaire . Dans le fichier app.js, vous trouverez un exemple pour le fournisseur d'itinéraire. Pour utiliser les paramètres, ajoutez-les simplement comme ceci:
$routeProvider.when('/view1/:param1/:param2', {
templateUrl: 'partials/partial1.html',
controller: 'MyCtrl1'
});
Ensuite, dans votre contrôleur, injectez $ routeParams:
.controller('MyCtrl1', ['$scope','$routeParams', function($scope, $routeParams) {
var param1 = $routeParams.param1;
var param2 = $routeParams.param2;
...
}]);
Avec cette approche, vous pouvez utiliser des paramètres avec une URL telle que: " http://www.example.com/view1/param1/param2 "
Bien que le routage soit effectivement une bonne solution pour l'analyse des URL au niveau de l'application, vous pouvez utiliser le service $location
de plus bas niveau, tel qu'injecté dans votre propre service ou contrôleur:
var paramValue = $location.search().myParam;
Cette syntaxe simple fonctionnera pour http://example.com/path?myParam=paramValue
. Cependant, seulement si vous avez configuré le $locationProvider
en mode HTML 5 avant:
$locationProvider.html5Mode(true);
Sinon, jetez un coup d’œil à la syntaxe http://example.com/#!/path?myParam=someValue "Hashbang" qui est un peu plus compliquée, mais qui offre l’avantage de travailler sur de vieux navigateurs ( non-HTML 5 compatible) également.
Si vous utilisez ngRoute, vous pouvez injecter $routeParams
dans votre contrôleur.
http://docs.angularjs.org/api/ngRoute/service/$routeParams
Si vous utilisez angular-ui-router, vous pouvez injecter $stateParams
J'ai trouvé une solution comment utiliser $ location.search () pour obtenir le paramètre de l'URL
d'abord dans l'URL, vous devez mettre la syntaxe "#" avant le paramètre tel que cet exemple
"http://www.example.com/page#?key=value"
puis dans votre contrôleur, mettez $ location en fonction et utilisez $ location.search () pour obtenir le paramètre d'URL pour
.controller('yourController', ['$scope', function($scope, $location) {
var param1 = $location.search().param1; //Get parameter from URL
}]);
Si les réponses déjà postées n'ont pas aidé, on peut essayer avec $ location.search (). MyParam; avec des URL http: //example.domain#? myParam = paramValue
function GetURLParameter(parameter) {
var url;
var search;
var parsed;
var count;
var loop;
var searchPhrase;
url = window.location.href;
search = url.indexOf("?");
if (search < 0) {
return "";
}
searchPhrase = parameter + "=";
parsed = url.substr(search+1).split("&");
count = parsed.length;
for(loop=0;loop<count;loop++) {
if (parsed[loop].substr(0,searchPhrase.length)==searchPhrase) {
return decodeURI(parsed[loop].substr(searchPhrase.length));
}
}
return "";
}
Moyen le plus simple et le plus simple d’obtenir une valeur d’URL
First add # to url (e:g - test.html#key=value)
url in browser (https://stackover.....king-angularjs-1-5#?brand=stackoverflow)
var url = window.location.href
(output: url = "https://stackover.....king-angularjs-1-5#?brand=stackoverflow")
url.split('=').pop()
output "stackoverflow"