Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Dojo
Dojo Forum d'entraide sur le framework Dojo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/09/2011, 11h00   #1
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 71
Points : 27
Points : 27
Par défaut 1.6.1 : problème dijit.tree et json

Bonjour,

Le code suivant affiche un dijit.tree :

Code :
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
 
 
      var rawdata = [
         {
            'label':'Titi',
            'children':[{'label':'Titi1'}]
         }
      ];
 
      var store = new dojo.data.ItemFileReadStore(
         {
               data: {
                   label: 'label',
                   items: rawdata
               }
         }
 
      );
 
      var treeModel = new dijit.tree.ForestStoreModel({
               rootLabel: "TitiRoot",
               childrenAttrs: ["children"],
               store: store
           });
 
      var treeControl = new dijit.Tree({
            model: treeModel,
            autoExpand:true
           },
           "treeOne");
 
 
      conteneurPage.addChild(treeControl);
 
      // Start the table container. This initializes it and places
      // the child widgets in the correct place.
      conteneurPage.startup();
      conteneurPage.layout();
En faisant la modification suivante, le dijit.tree ne s'affiche plus. Du moins, seul le noeud root "TitiRoot" s'affiche.

Code :
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
 
//tab est un tableau contenant les données à afficher dans l'arbre.
//je le met au format json.
var rawdata = dojo.toJson(tab);
 
      //D'ailleurs voici le jSon contenu dans rawdata :
      /*
      "
      [
         {
            "label":"Titi",
            "children":[{"label":"Titi1"}]
         }
      ]
      "
      */
//Comme dans toute chaine on a des guillemets au début et à la fin.
 
      var store = new dojo.data.ItemFileReadStore(
         {
               data: {
                   label: 'label',
                   items: rawdata
               }
         }
 
      );
 
      var treeModel = new dijit.tree.ForestStoreModel({
               rootLabel: "TitiRoot",
               childrenAttrs: ["children"],
               store: store
           });
 
      var treeControl = new dijit.Tree({
            model: treeModel,
            autoExpand:true
           },
           "treeOne");
 
 
      conteneurPage.addChild(treeControl);
 
      // Start the table container. This initializes it and places
      // the child widgets in the correct place.
      conteneurPage.startup();
      conteneurPage.layout();
Je pense que le pb vient des guillemets contenue dans le json et qu'il faudrait avoir

Code :
1
2
3
4
5
6
7
 
      [
         {
            "label":"Titi",
            "children":[{"label":"Titi1"}]
         }
      ]
au lieu de

Code :
1
2
3
4
5
6
7
8
9
 
"
      [
         {
            "label":"Titi",
            "children":[{"label":"Titi1"}]
         }
      ]
      "
Pour le vérifier, dans ma variable contenant le json (en l'occurence rawdata), j'aurais aimer remplacer les séquences et par et mais je ne sais pas comment faire ??? Je pense qu'il faut jouer avec les regex que je ne maitrise pas bien.

On est bien d'accord que je ne souhaite surtout pas enlever tous les guillemets : "Titi1" doit rester "Titi" par exemple. Donc seulement les guillemets de début et de fin (mais peut on le faire dans une chaine ???)

Merci d'avance.
arsene555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h15   #2
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 690
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 690
Points : 5 763
Points : 5 763
Bonjour,

Lorsque vous créez votre store, vous utilisez les quottes :

Dans les autres cas, vous utiliser les guillemets.
Utilisez les quottes partout :

Code :
1
2
3
4
5
6
7
 
      var rawdata = [
         {
            'label':'Titi',
            'children':[{'label':'Titi1'}]
         }
      ];
Mais bon, pas sûr que ce soit ça le problème.
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h53   #3
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 71
Points : 27
Points : 27
Oui mais c'est dans le 1er code que je fait ça et ce code là fonctionne. C'est le 2ème qui pose problème.

Mais bon j'ai quand-même modifié le 1er code et mis des quotes partout car il convient d'avoir du code homogène.
arsene555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h57   #4
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 690
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 690
Points : 5 763
Points : 5 763
Ce que je voulais dire c'est que le json peut ressembler à ça :

Code :
1
2
3
4
5
6
7
8
9
 
"
      [
         {
            'label':'Titi',
            'children':[{'label':'Titi1'}]
         }
      ]
      "
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 12h46   #5
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 71
Points : 27
Points : 27
Si dans mon tout 1er code, je change ça

Code :
1
2
3
4
5
6
7
 
var rawdata = [
         {
            'label':'Titi',
            'children':[{'label':'Titi1'}]
         }
      ];
en ça

Code :
1
2
3
4
5
6
7
 
var rawdata = "[
         {
            'label':'Titi',
            'children':[{'label':'Titi1'}]
         }
      ]";
j'ai une erreur javascript.
arsene555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 13h44   #6
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 690
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 690
Points : 5 763
Points : 5 763
Citation:
Envoyé par vermine Voir le message
Ce que je voulais dire c'est que le json peut ressembler à ça :
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h10   #7
Membre éprouvé
 
Gibot Daniel
Inscription : janvier 2010
Messages : 314
Détails du profil
Informations personnelles :
Nom : Gibot Daniel
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2010
Messages : 314
Points : 440
Points : 440
Bonjour,

D'où provient votre "tab" ?
A quoi ressemble-t'il avant la conversion en Json ?
Code :
var rawdata = dojo.toJson(tab);
Votre "rawdata" initial est un tableau tout comme votre "tab" peut être n'y a t'il pas besoin de faire une conversion (?) ou alors la faire plus en amont si cela vient de script php ou java côté serveur.
Daniel_Gibot est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/09/2011, 14h37   #8
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 71
Points : 27
Points : 27
J'ai viré cette conversion et ça roule.

Je ne sais pas ce qui m'a pris de la faire, de demander de mettre en json qqch qui, nativement, est du json.

Enfin bref ! Un grand merci à tous.
arsene555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h15.


 
 
 
 
Partenaires

Hébergement Web