Bonjour,
J'aimerai que les données soient chargées par un fichier action (URL).
Quand les données sont chargées par la view la methode initialize charge bien les tags de la personne et
les tags encore disponible mais quand l'action me retourne un JSON ca ne marche pas!?
Le code est commenté
Extrait du controller maitrise.js
Le template est affiché dans un panel qui est inclu dans un viewport.
Le template est separé en deux. Une partie "on" les tags associé a une personne et une partie "off" ou il y a la liste des tags disponible en BDD.
Store des tags (deja) associé a la personne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // TAGS //////////////// var tagsTpl = new Ext.XTemplate( '<tpl for="items">', '<a href="javascript:onTagClick({values.data.id_tag})" id=tag{values.data.id_tag} class=tag-{values.data.tagged}>{values.data.tag_name}</a>', '</tpl>' );
Store de l'ensemble des tags et formatage dans le template
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // j'ai crée ce store afin que les données puissent changer sans recharger la page storeTagPerson = new Ext.data.Store({ url: '../action/tagAction.php?actionType=getTagNeed', //data:tagsPerson, // ca marche avec les données de la view reader: new Ext.data.JsonReader({ root: 'data', id: 'id_tag', fields: ['id_tag', 'tag_name', 'tagged'] }) }); storeTagPerson.load();
Une autre idée mais qui na pas connu plus de succes
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 storeTag = new Ext.data.Store({ data: tags, // crée sur la view mais ca ne me derange pas reader: new Ext.data.JsonReader({ root: 'response.data', totalProperty: 'totalCount', id: 'id_tag', fields: ['id_tag', 'tag_name', 'tagged'] }), format: function () { this.filter("tagged", "on"); tagsTpl.overwrite(Ext.ComponentMgr.get("tagsOn").body, this.data); this.filter("tagged", "off"); tagsTpl.overwrite(Ext.ComponentMgr.get("tagsOff").body, this.data); this.clearFilter(); } ,initialize: function () { this.each(function (item) { this.set("tagged","off"); }); /* Je ne souhaite plus utilisé ce systeme qui affiche les tags associé a UNE personne et qui va chercher dans la view les données (var tagsPerson = '{ data : [{"id_tag":"43","tag_name":"Ada"},{"id_tag":"30","tag_name":"Admin"},{"id_tag":"19","tag_name":"AOCS"}]}';) t = tagsPerson.data; // caching for(i=0;i<t.length;i++) { this.getById(t[i].id_tag).set("tagged","on"); } */ // Je souhaite quelque chose comme ca: storeTagPerson.each(function (item) { this.getById(this.data.id_tag).set("tagged","on"); }); this.format(); } }); storeTag.initialize();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Ext.Ajax.request({ url: '../action/tagAction.php?actionType=getTagNeed', success: function(response){ alert(response.responseText); var tagsPerson = response.responseText; } });
J'espere avoir été assez clair. Merci d'avance. ++
Partager