如何使用Extjs 4中的元数据创建带有jsonreader的商店?

时间:2012-06-01 03:22:11

标签: json extjs4 metadata store jsonreader

是否可以创建一个读取json的商店,并将json中元数据中指定的字段用作模型?

我想说的是:

var store = new Ext.data.Store({
    autoLoad: {
        params: {
            metaNeeded: true
        }
    },
    reader: new Ext.data.JsonReader({fields:[]}),
    proxy: new Ext.data.HttpProxy({
        api: {
            url: 'php/chart-data.php'
        }
    })
});

我尝试了很多组合,但似乎无法让它发挥作用。 我目前收到错误“无法调用方法'indexOf'未定义”。我有其他人,包括“对象没有读取方法”。

我发送的json是:

{
  metadata:{
    root:"rows",
    sortInfo:{
       field:"date",
       direction:"ASC"
    },
    fields:[ {
          name:"date"
       }, {
          name:"flow"
       },{
          name:"limit"
       }
    ],
    idProperty:"date"
  },
  success:true,
  rows: << snip >>
}

是否可以通过收到的数据配置商店的模型,以便稍后我可以在同一商店使用不同的字段(例如日期,流量,限制和温度)?

1 个答案:

答案 0 :(得分:1)

我已经使用以下内容:

var store = new Ext.data.Store({
    proxy: {
        type: 'ajax',
        url: 'php/chart-data2.php',
        reader: new Ext.data.JsonReader({
            fields:[]
        })
    }
});

发送json的php:

'{"metaData":{
        "root":"rows",
        "fields": [
            {"name":"date",
             "type":"number", 
             "convert": function(val, rec) {
                return val*1000
            } },
            {"name":"flow"},
            {"name":"limit"}
        ]
    },
    "totalCount":'.count($chart).',
    "success":true,
    "rows":' . json_encode($chart) . '
}'

现在允许服务器指定数据(在图表中显示),并可以动态添加。我不知道它是否好,但它确实有效。我对此缺乏文档感到失望。