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.
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 des tags (deja) associé a la personne:
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();
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
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();
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
 
		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. ++