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 :

Afficher des données déjà présentes dans le json du navigateur


Sujet :

AngularJS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut Afficher des données déjà présentes dans le json du navigateur
    Bonjour,

    Je fait des essais avec Angular-route pour aquérir de l'expérience.

    Je reçois des données en json dans le navigateur mais je n'arrive pas à les afficher dans un tableau qui est inséré dans une page html par un ng-route. Vous pouvez voir la copie d'écran ci-dessous :
    Nom : json.png
Affichages : 1467
Taille : 54,5 Ko

    J'ai essayé plusieur choses et voici le code que j'ai fait après plusieurs essais (j'ai même ajouté le ng-controller dans la balise TABLE alors que ce controller est normalement injecté par le fichier javascript :

    fichier about.html qui est inséré dans acceuil.html :
    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
    23
    <div class="jumbotron text-center">
        <h1>About Page</h1>
    		<table class="table table-striped" ng-controller="aboutController">
    			<thead>
    				<tr>
    					<th>titre</th>
    					<th>corps</th>
    				</tr>
    			</thead>
    			<tbody>
    				<tr ng-repeat="mess in messageBis">
    					<td>{{mess.titre}}</td>						
    					<td>{{mess.corps}}</td>		
    					<td>
    						<button class="btn btn-default"
    							ng-click="modifier_produit_conditionne(e)">Modifier</button>
    						<button class="btn btn-danger"
    							ng-click="supprimer_produit_conditionne()">Supprimer</button>
    					</td>
    				</tr>
    			</tbody>
    		</table>
    </div>

    acceuil.html :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <!DOCTYPE html>
    <html ng-app="scotchApp">
    <head>
    <meta charset="UTF-8">
    <title>Acceuil</title>
    	<!-- load bootstrap and fontawesome via CDN -->
    	<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
    	<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" />
     
    	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script>
        <script src="js/script.js"></script>
    </head>
    <body ng-controller="mainController">
    	<!-- HEADER AND NAVBAR -->
    	<header>
    		<nav class="navbar navbar-default">
    			<div class="container">
    				<div class="navbar-header">
    					<a class="navbar-brand" href="/">Angular routing example</a>
    				</div>
     
    				<ul class="nav navbar-nav navbar-right">
    					<li><a href="#"><i class="fa fa-home"></i> Home </a></li>
    					<li><a href="#about"><i class="fa fa-shield"></i> About </a></li>
    					<li><a href="#contact"><i class="fa fa-comment"></i> Contact </a></li>
    				</ul>
    			</div>
    		</nav>
    	</header>
     
    	<!-- MAIN CONTENT AND INJECTED VIEWS -->
    	<div id="main">
    		<div ng-view></div>
    	</div>
    </body>
    </html>

    fichier javascript (je pense qu'il n'y a pas de problème de ce côté là puisque je peux voir le json dans le navigateur) :
    Code : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    /**
     * 
     */
     
    var scotchApp = angular.module('scotchApp', ['ngRoute']);
     
    scotchApp.config(function($routeProvider) {
    	$routeProvider
     
    	// route for the home page
    	.when('/', {
    		templateUrl : 'vues/home.html',
    		controller : 'mainController'
    	})
     
    	// route for the about page
    	.when('/about', {
    		templateUrl : 'vues/about.html',
    		controller : 'aboutController'
    	})
     
    	// route for the contact page
    	.when('/contact', {
    		templateUrl : 'vues/contact.html',
    		controller : 'contactController'
    	});	
     
    });
     
    scotchApp.controller('mainController', function($scope) {
    	console.log("main controller");
    	$scope.message = 'EveryOne come and see how good I look !';
    });
     
    scotchApp.controller('aboutController', function($scope, $http) {
    	$scope.messageBis = [];
    	$http.get('gestMessage').then(function(response) {
    		$scope.messageBis = response.data.message;
    	});
    	console.log("about controller");
     
    });
     
    scotchApp.controller('contactController', function($scope) {
    	console.log("contact controller");
    	$scope.message = 'Contact page';
    });

  2. #2
    Invité
    Invité(e)
    Par défaut
    Que dis un console.log(response); si tu l'ecris dans la fonction de rappel de $http.get('gestMessage')

    Faut enlever le ng-controller de table, y'a pas besoin normalement

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Salut,

    Merci pour votre aide.

    Que dis un console.log(response);
    Disons que du moment ou je vois bien les objets apparaître dans le navigateur (voir copie d'écran de mon premier message), je pense que cela ne sert à rien. Mais je l'ai essayé quand même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    scotchApp.controller('aboutController', function($scope, $http) {
    	$scope.messageBis = [];
    	$http.get('gestMessage').then(function(response) {
    		console.log("response : " + response);
    		$scope.messageBis = response.data.message;
    	});
    	console.log("about controller");
    });
    et voici le résultat en console du navigateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ponse : [object Object]

    Faut enlever le ng-controller de table, y'a pas besoin normalement
    Tout à fait d'accord. Au début je ne l'avais pas mais voyant que je n'arrivais pas à faire apparaître mes attributs, je me suis dit que peut-être il manquait le controller ... que neni !


    Du coup, je pense que c'est simplement une façon d'écrire mon objet dans le html.
    Moi je l'ai écris de plusieurs manière mais aucune n'a fonctionné jusqu'à présent ... donc je suis à cours d'idées ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <tr ng-repeat="mess in messageBis">
    	<td>{{mess.titre}}</td>						
    	<td>{{mess.corps}}</td>

  4. #4
    Invité
    Invité(e)
    Par défaut
    chez moi ca marche avec ton code :

    Nom : pb1.jpg
Affichages : 1185
Taille : 70,0 Ko

    Index :

    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
    23
    <div class="jumbotron text-center">
        <h1>About Page</h1>
    		<table class="table table-striped" ng-controller="aboutController">
    			<thead>
    				<tr>
    					<th>titre</th>
    					<th>corps</th>
    				</tr>
    			</thead>
    			<tbody>
    				<tr ng-repeat="mess in messageBis">
    					<td>{{mess.titre}}</td>						
    					<td>{{mess.corps}}</td>		
    					<td>
    						<button class="btn btn-default"
    							ng-click="modifier_produit_conditionne(e)">Modifier</button>
    						<button class="btn btn-danger"
    							ng-click="supprimer_produit_conditionne()">Supprimer</button>
    					</td>
    				</tr>
    			</tbody>
    		</table>
    </div>

    Le controleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    angular.module('neutre', [])
     
    .controller('neutreCtrl', function($scope) {
     
    	$scope.messageBis = [
    	{corps:"corps du message1",titre:"Titre du message 1"},
    	{corps:"corps du message2",titre:"Titre du message 2"}
    	];
     
     
    /* FIN DU CONTROLEUR */
    });

    Que dit un console.log($scope.messageBis); ? C'est vraiment curieux que cela ne fonctionne pas, parfois, certains serveurs rajoutent un index dans les tableaux JSON mais cela ne doit pas gêner, je pense plutôt à un pb de routing.
    Une variable $scope basique est elle bien interprétée (par exemple, écrire $scope.test = "monTest"; dans le controleur, puis {{test}} dans la vue, cela doit écrire monTest dans ta vue)
    Dernière modification par NoSmoking ; 07/11/2016 à 18h46.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Bonjour,

    J'ai compris l'erreur que j'ai faite :

    Dans la méthode "gestMessage" de la classe action, j'utilise un paramètre message dans une boucle for et un message Bis. En fait, j'ai simplement utilisé le mauvais nom dans le script.js.
    Mais même si j'avais fait cette erreur, cela est étrange que j'ai pu voir les message dans le navigateur ... et c'est cela qui m'a fait chercher du mauvais côté !

    Voici la classe action :
    Code : 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
    public String gestMessage() {
    	log.info("IndexAction - gestMessage");
    	Message mess1 = new Message();
    	mess1.setTitre("titre du message1");
    	mess1.setCorps("corps du message1");
    	messageBis.add(mess1);
    	Message mess = new Message();
    	mess.setTitre("titre du message2");
    	mess.setCorps("corps du message2");
    	messageBis.add(mess);
    	Message mess2 = new Message();
    	mess2.setTitre("titre du message3");
    	mess2.setCorps("corps du message3");
    	messageBis.add(mess2);
    	for(Message message : messageBis) {
    		log.info("message : " + message.getTitre());
    	}
     
    	return SUCCESS;
    }
    Merci,

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

Discussions similaires

  1. Afficher des données en arabe dans phpMyAdmin
    Par wajdi321 dans le forum Administration
    Réponses: 0
    Dernier message: 18/07/2014, 01h44
  2. Afficher des données d'excel dans des txtbox
    Par drutarus dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 17/03/2013, 17h31
  3. afficher des données en dynamique dans un gridview
    Par DeveloppeurWeb dans le forum VB.NET
    Réponses: 0
    Dernier message: 05/07/2011, 18h48
  4. Réponses: 5
    Dernier message: 06/02/2007, 13h46
  5. [VBA-E] afficher des données apres saisie dans cellule
    Par user0505 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2006, 14h04

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