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 に答える