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


emile01
Auteur
Réponse acceptée

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)

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

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
Auteur

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)