mes données JSON ressemble à ceci:ExtJS 4: obtenez record stocker des valeurs
({"success": "true", "message" : "OK","data":[{"id_metric":"1","name_filter":"doc filter","type_guicomp":"combobox"},{"id_metric":"1","name_filter":"severity","type_guicomp":"combobox"}]})
Je voudrais être en mesure de récupérer la valeur du champ "type_guicomp"
pour la "id_metric" = 1
, de sorte que le résultat serait: "type_guicomp":"combobox"
et "type_guicomp":"combobox"
.
Je fais cela parce que j'ai besoin de la valeur "combobox"
pour l'assigner à une variable. J'ai essayé plusieurs choses, y compris:
myStore.load({
scope: this,
callback : function(record, operation, success) {
console.log(record);
console.log(record.data);
}
Et:
var index = Ext.StoreMgr.lookup("myStore").findExact('id_metric',1);
var rec = Ext.StoreMgr.lookup("myStore").getAt(index);
console.log(rec);
Ces solutions retour undefined ou null. Alors, quand je l'ai fait dans le rappel:
var i = myStore.getCount();
console.log(i);
Il est revenu 0
. Mais quand je vérifie la sortie de json, ce n'est pas vide et il y a des données dedans.
Qu'est-ce que je fais mal? S'il vous plaît toute aide serait appréciée.
EDIT
Mon magasin ressemble à ceci:
Ext.define('Metrics.store.MyStore', {
extend: 'Ext.data.Store',
model: 'Metrics.model.MyModel',
autoLoad: true,
idProperty: 'id_metric',
proxy : {
type : 'ajax',
actionMethods : 'POST',
node : 'id_metric',
api : {
read : 'gui_comp_items.php' //the php script that gets data from db
},
reader: {
type: 'json',
successProperty: 'success',
messageProperty: 'message',
root: 'data'
}
}
});
Mon modèle:
Ext.define('Metrics.model.MyModel', {
extend: 'Ext.data.Model',
fields: [
{name : 'id_metric', type : 'int'},
{name : 'name_filter', type : 'string'},
{name : 'type_guicomp', type : 'string'},
{name : 'value', type : 'string'}]
});
à quoi ressemble votre magasin et votre maquette de modèle? – Geronimo
Je les ai ajouté à mon message. – salamey
Pour autant que je m'en souvienne, idProperty n'est pas la propriété du magasin, mais le modèle envisage de le déplacer là-bas et avec cela vous renvoyez deux id_metric avec la même valeur, donc cela ne semble pas unique. De plus, vous pouvez raccourcir le code 'Ext.getStore ('MyStore'). FindRecord ('id_metric', 1)'. Double vérifier la réponse avec firebug ou autre, s'il n'y a pas d'erreur comme un problème avec le décodage. Pour l'instant, essayez de décharger des données dans la fonction de rappel de chargement, car vous pourriez les récupérer avant même d'avoir été chargés. –