[AngularJS] Comment récupérer un paramètre envoyé dans URL?

Par emile01, il y a 9 ans


Bonjour,

Je cherche comment récupérer un paramétre dans un controlleur qui envoyé dans url.

Ce que je fais

Voila mon code html:

<tr ng-repeat="user in ListUser"> <td> <strong>{{user.nom}} et l'id: {{user.id}}</strong> <!-- j'ai alors emile et l'id: 1 --> </td> <td> <a ng-href="#/Utilisateur/{{user.id}}" class="btn btn-primary btn-sm" name="ConsulterCheckLists"> <!--ici l'id est bien affiché /Utilisateur/1 --> <i class="md md-receipt"></i> </a> </td> </tr>

Code angualarjs:

var app = angular.module('Mainapp', ['ngRoute','file-model','ui.bootstrap','ngMessages']); app.config(function($routeProvider) { $routeProvider .when('/Utilisateur/:idUser', { // ici le passage de l'idUser controller:'UtilisateursController', templateUrl: 'Views/indexUsers.html' }) .otherwise({ redirectTo: '/', }); }; app.controller("UtilisateursController",['$scope','$routeParams','$window',function($scope,$http,$window,$routeParams) { //Get ID out of current URL var UserId = $routeParams.idUser; // Cannot read property 'idUser' of undefined console.log("id of user "+UserId); }]);

Ce que j'obtiens

Aprés un test, j'ai dans le console ce message d'eurreur:
angular.js:11598 TypeError: Cannot read property 'idUser' of undefined

Merci de m'aider pour résoudre ce probléme.

4 réponses

Defy, il y a 9 ans

le console log de $routeParam donne quoi? petit conseil en passant, ui-router est un router plus performant et plus complet que le router de base d'angular

Maenhyr, il y a 9 ans

Bonsoir.

Le problème vient du fait qu'il manque '$http' dans ton tableau à la ligne 1. De plus, L'ordre des paramètres du tableau ne colle pas avec l'ordre des imports dans la fonction.

emile01, il y a 9 ans

Merci à vous

Defy , le console log de $routeParam n'affiche rien sur le navigateur méme si j'ai installé le ui-router.

prbaron j'ai modifier cette ligne comme tu as dit, mais rien à changer:

app.controller("UtilisateursController",['$scope','$http','$window','$routeParams',function($scope,$http,$window,$routeParams)
emile01, il y a 9 ans

J'ai résolu mon probléme en changeant la définition des paramétres du mon controleur.

app.controller("UtilisateursController",function($scope,$http,$window,$routeParams)