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 les loc1
deux renvoient test comme résultat pour l'URL ci-dessus. C'est la bonne route?
javascript
angularjs
routeparams
praveenpds
la source
la source
Réponses:
Je sais que c'est une vieille question, mais il m'a fallu un certain temps pour résoudre ce problème étant donné la documentation angulaire clairsemée. Le RouteProvider et routeParams est le chemin à parcourir. L'itinéraire relie l'URL à votre Controller / View et les routeParams peuvent être transmis au contrôleur.
Découvrez le projet de semences angulaires . Dans app.js, vous trouverez un exemple pour le fournisseur d'itinéraire. Pour utiliser des paramètres, ajoutez-les simplement comme ceci:
Ensuite, dans votre contrôleur, injectez $ routeParams:
Avec cette approche, vous pouvez utiliser des paramètres avec une URL telle que: " http://www.example.com/view1/param1/param2 "
la source
});
devrait être}]);
/view/1/2?other=12
avec$routeParams.other
Bien que le routage soit en effet une bonne solution pour l'analyse d'URL au niveau de l'application, vous souhaiterez peut-être utiliser le service de plus bas niveau
$location
, tel qu'il est injecté dans votre propre service ou contrôleur:Cette syntaxe simple fonctionnera pour
http://example.com/path?myParam=paramValue
. Cependant, uniquement si vous avez configuré le$locationProvider
dans le mode HTML 5 avant:Sinon, jetez un œil à la syntaxe http://example.com/#!/path?myParam=someValue "Hashbang" qui est un peu plus compliquée, mais qui a l'avantage de fonctionner sur d'anciens navigateurs (non compatibles HTML 5) comme bien.
la source
<base href="http://example.com/en/" />
balise dans votreindex.html
..config(['$locationProvider', function($locationProvider) { $locationProvider.html5Mode({ enabled: true, requireBase: false }); }])
$locationProvider
pour que cela fonctionne.http://example.com/path#?someKey=someVal
, puis$location.search().someKey // => 'someVal'
Si vous utilisez ngRoute, vous pouvez injecter
$routeParams
dans votre contrôleurhttp://docs.angularjs.org/api/ngRoute/service/$routeParams
Si vous utilisez un routeur ui angulaire, vous pouvez injecter
$stateParams
https://github.com/angular-ui/ui-router/wiki/URL-Routing
la source
$stateParams
afficher les paramètres de la requête, j'ai dû les spécifier lors de la définition des états, comme indiqué dans github.com/angular-ui/ui-router/wiki/…J'ai trouvé une solution pour 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 comme cet exemple
"http://www.example.com/page#?key=value"
puis dans votre contrôleur, mettez $ location dans la fonction et utilisez $ location.search () pour obtenir le paramètre URL pour
la source
Si les réponses déjà publiées n'ont pas aidé, on peut essayer avec $ location.search (). MyParam; avec les URL http: //example.domain#? myParam = paramValue
la source
la source
Un moyen simple et plus facile d'obtenir la valeur de l'URL
la source
Lorsque vous utilisez angularjs avec express
Sur mon exemple, j'utilisais angularjs avec express faisant le routage, donc l'utilisation de $ routeParams gâcherait mon routage. J'ai utilisé le code suivant pour obtenir ce que j'attendais:
Celui-ci reçoit un modèle d'URL et le chemin de l'emplacement donné. Je l'appelle avec:
Assembler tout cela mon contrôleur est:
Le résultat sera:
J'espère que cela aide quelqu'un là-bas!
la source