私のjsonデータは次のようになります:
({"success": "true", "message" : "OK","data":[{"id_metric":"1","name_filter":"doc filter","type_guicomp":"combobox"},{"id_metric":"1","name_filter":"severity","type_guicomp":"combobox"}]})
"type_guicomp"
のフィールド値を取得できるようにしたい"id_metric" = 1
ので、結果は:"type_guicomp":"combobox"
と。になり"type_guicomp":"combobox"
ます。
"combobox"
これを行うのは、変数に割り当てるための値が必要だからです。私は以下を含むいくつかのことを試しました:
myStore.load({
scope: this,
callback : function(record, operation, success) {
console.log(record);
console.log(record.data);
}
と :
var index = Ext.StoreMgr.lookup("myStore").findExact('id_metric',1);
var rec = Ext.StoreMgr.lookup("myStore").getAt(index);
console.log(rec);
これらのソリューションは、未定義またはnullを返します。だから私がコールバックでこれをしたとき:
var i = myStore.getCount();
console.log(i);
戻ってき0
ました。しかし、jsonの出力を確認すると、空ではなく、実際にデータが含まれています。
私は何が間違っているのですか?助けていただければ幸いです。
編集
私の店はこのように見えます:
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'
}
}
});
私のモデル:
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'}]
});