IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AngularJS Discussion :

Méthode retourne undefined


Sujet :

AngularJS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Par défaut Méthode retourne undefined
    Bonjour à tous,

    Je commence actuellement sur AngularJS est j'ai un soucis avec la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     function convertLatLongToCity(latitude, longitude){
        var city = null;
        $http({
        method : "GET",
        url : "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + "," + longitude + "&key=..."
        }).then(function mySucces(response) {
            city = response.data.results[1].formatted_address ;
        }, function myError(response) {
            console.log("erreur requete");
        }); 
     
        return city;
    }
    si je fais un console.log de la variable city à l'interieur de la méthode le résultat s'affiche correctement mais quand j'appelle cette méthode dans mon controller et que j'affiche dans la console ce qu'elle me retourne j'obtiens "undefined". J'ai essayé pour voir de faire la méthode dans le controller mais cela ne change rien et étant novice je suis un peu bloqué.

    Est-ce que quelqu'un pourrait me dire comment procéder ? cela serait sympa.


    Merci d'avance

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    regarde cette discussion, entre bien d'autres, c'est la même problématique.

  3. #3
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Un peu de vocabulaire, une méthode est soit une procédure, soit une fonction.

    Une procédure est une séquence d'instructions qui ne retourne pas de résultat.

    Une fonction est une séquence d'instructions qui retourne un résultat.

    En javascript il n'y a pas de distinction entre une procédure et une fonction. Le mot réservé pour déclarer une méthode est systématiquement le mot "function".

    Pour retourner un résultat, il faut écrire l'instruction "return" suivie de la variable à retourner.

    Donc pour que ta fonction retourne la valeur de "city", il te manque cette ligne de code.

    return city;

    à la fin de ta fonction.

    Lorsque le return est manquant, javascript retourne automatiquement "undefined".

    C'est donc normal que tu obtiennes "undefined" dans ton contrôleur compte tenu de ton implémentation.

    Ceci dit, effectuer un "return" de "city" n'est pas la solution ici, compte tenu du fait que tu utilises le service "$http" qui a un retour asynchrone.

    Je t'invite à lire cette série de tutoriels :

    http://blog.ippon.fr/2015/01/23/les-...-angularjs-13/

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Par défaut
    Autant pour moi Marco, j'ai toujours pris la mauvaise habitude de dire méthode quand il s'agit d'une fonction et quand il s'agit d'une procédure donc qui ne retourne rien j'appelle ça une procédure .Une remise en place sur les termes techniques à utiliser de temps en temps ne fait pas de mal.

    Par contre je retourne bien city à la fin de ma fonction, tu n'as pas vu à mon avis.

  5. #5
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Citation Envoyé par Seb2913 Voir le message
    Par contre je retourne bien city à la fin de ma fonction, tu n'as pas vu à mon avis.
    En effet je me suis fait avoir par le scroll.

    Néanmoins cela ne change pas grand chose à ma réponse !

    Il te faut te documenter et te former sur les promises.

Discussions similaires

  1. [FLASH 8] Probleme méthode send de LoadVars
    Par dom_dev dans le forum Flash
    Réponses: 11
    Dernier message: 26/09/2006, 12h07
  2. Réponses: 2
    Dernier message: 23/08/2006, 15h47
  3. Problème Corba retourner un objet
    Par stephane92400 dans le forum Général Java
    Réponses: 17
    Dernier message: 07/06/2006, 09h37
  4. probleme methode="post"
    Par ardamus dans le forum Langage
    Réponses: 8
    Dernier message: 01/03/2006, 11h30
  5. Probleme Methode POST
    Par pidu dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/02/2006, 17h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo