1

是否可以创建一个将读取 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 >>
}

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

4

1 回答 1

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) . '
}'

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

于 2012-06-01T14:55:47.523 回答