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 :

Angular et REST


Sujet :

AngularJS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut Angular et REST
    Bonjour j'essaye de comprendre comment en javascript avec Angular et REST je peux me connecter à un web service qui récupère des données en base, et effectuer des opérations CRUD sur les données que me retourne mon ws.

    Dans un premier temps j'aimerai juste pouvoir me connecter à ce web service et récupérer les données pour celà, j'ai essayé plusieurs méthodes, mais je n'ai jamais réussi à retourner une valeur sur ma vue. Parmi ce que j'ai essayé voici pour le .js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function AdminCtrl($scope, $http) {
    $http({method: 'GET', url: 'http://localhost:8010/mon_ws'}).
                success(function(data, status, headers, config) {
                    $scope.assets= data;
                })
    }
    Puis un deuxième cas ou j'essaye de me connecter sans rest :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var url = "http://localhost:8010/mon_ws";
     
        $http.jsonp(url) 
            .success(function(data) {
                $scope.assets = data;
     
            }).error(function(data) {
                $scope.assets = data || "Request failed";
            });
    Ma vue html est toujours la même dans les deux cas :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <div ng-controller="AdminCtrl">
    <div class="span8">
            <table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" id="assets">
                <h1 class="assets_title">Assets</h1>
                <thead>
                    <th>Value</th>
                    <th>Description</th>
                </thead>
                <tbody>
                    <tr ng-repeat="asset in assets | filter:query">
                        <td>
                            {{asset.Name}}
                        </td>
                        <td>
                            {{asset.Description}}
                        </td>
                    </tr>
                </tbody>
     
            </table>
        </div>
    </div>

    En sachant que Name et Description son les attributs de l'objet en base, récupéré par le web service appelé et que je souhaite exploiter.

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Déjà tu as des incohérences dans ton binding controller-view : dans ta vue, la variable sur laquelle tu fais le ng-repeat est "Assets". Or dans ton premier test tu défini $scope.apps, alors que apps n'est pas utilisé côté template, et dans le deuxième tu définis $scope.asset alors que asset est, dans ta vue, l'élément d'itération.

    Donc si l'objet data résultant de ta requête ajax contient les assets attendus dans ton template, sous forme de tableau, le plus logique serait d'avoir $scope.Assets = data dans ton contrôleur. Dans ce cas l'instruction ng-repeat="asset in Assets" dans ton template itère bien sur les données voulues.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut
    erreur de ma part j'ai juste pas repris le bon exemple. Merci de l'avoir signaler, histoire que ça soit plus cohérent à présent.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut
    Si quelqu'un à une idée je suis toujours preneur, je n'y arrive toujours pas.

    Quand je met un point d’arrêt ça ne passe jamais dans le .succes

    J'ai testé une autre façon de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var url = "http://localhost:8010/mon_ws";
     
        $http.jsonp(url)
            .success(function(data) {
                $scope.assets = new Array(data);
     
                for(var index = 0; index < assets.length; index++){
                    Name: $scope.assets[index];
                }
     
            }).error(function(err) {
                console.log("get error : "+err);
            });
    Il y a une légère avancée, dans le sens ou le tableau se déploie partiellement des lignes se rajoutent dans le tableau mais il reste vide.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Tu as suivi ta requêtes AJAX dans un debugger (firebug/chrome...) ? Est-ce qu'une réponse correctement formatée avec les données voulues t'es bien retournée ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut
    J'ai bien une réponse qui m'intéresse qui est retournée dans le suivi de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"Children":[],"Counters":[],"Description":"blabla","Id":"aet5ger8a8eg","Name":"tructruc","ParentId":"zapia-euu8984","Status":null,"Location":null}
    Plus exactement c'est le "Name" que j'essaye de récupérer dans un premier temps.

    J'ai récupérer l'erreur dans la console :

    get error : undefined

    SyntaxError: invalid label

    {"Children":[],"Counters":[],"Description":"blabla"......}
    Sur la colonne 1 ligne 1 soit au niveau du premier {

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [j3d] HeavyComponent affiche au dessus du reste
    Par FarookFreeman dans le forum 3D
    Réponses: 3
    Dernier message: 10/07/2004, 22h44
  2. Réponses: 7
    Dernier message: 20/04/2004, 15h55
  3. automationn excel, Champ nombre reste en text ???
    Par mat_lefebvre dans le forum Access
    Réponses: 16
    Dernier message: 09/12/2003, 11h37
  4. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44
  5. TBitBtn reste enfoncé
    Par TRINCAL Sylvain dans le forum C++Builder
    Réponses: 8
    Dernier message: 25/06/2002, 16h31

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