8

私の質問は、totalRecords 以外のメタデータを取得する方法です。私の場合は、バージョン、コード、検索クエリです (json を見てください)。

{
"result": {
    "version":"1",
    "code":"200",
    "searchquery": "false",
    "totalRecords": "2",
    "account":[
            {
                "lastname": "Ivanoff", 
                "firstname": "Ivan", 
                "accountId":"1"
            },
            {
                "lastname": "Smirnoff", 
                "firstname": "Ivan", 
                "accountId":"2"
            }
        ]
}

}

これが私のモデルです:

Ext.define("test.Account", {
    extend: "Ext.data.Model",
    fields: [
        {name: 'accountId', type: 'string'},
        {name: 'lastname', type: 'string'},
        {name: 'firstname', type: 'string'}    
    ]
});

そして保存します:

Ext.define("test.TestStore", {
    extend: "Ext.data.Store",
    model: "test.Account",
    proxy: {
        type: "ajax",
        url: "users.json",  
        reader: {
            type    : 'json',
            root    : 'result.account',
            totalProperty: "result.totalRecords"
        }
    },

    listeners: {
        load: function(store, records, success) {
            console.log("Load: success " + success);     
        }
    }
});

このストアを使用すると、レコード (アカウント) をロードできますが、残りのフィールドにアクセスする方法が見つかりません。

前もって感謝します。

4

3 に答える 3

17

これが私の問題の解決策です。応答データを取得して解析し、メタデータを保存できる Proxy クラスで afterRequest イベントを処理しています。これは TestStore クラスのプロキシ部分です。

TestStore クラスのプロキシ部分は次のとおりです。

proxy: {
        type: "ajax",
        url: "/users.json",  
        reader: {
            type    : 'json',
            root    : 'gip.account',
            totalProperty: "gip.totalRecords",
            searchquery: "searchquery"
        },
        afterRequest: function(req, res) {
            console.log("Ahoy!", req.operation.response);    
        }
    }
于 2012-06-13T16:09:16.127 に答える
1

Ext.data.Proxyクラス、より具体的にはメソッドを見てくださいprocessResponse()。追加のデータを抽出する必要がある場合は、標準クラスを拡張してそのメソッドを変更する必要があります。

于 2012-06-12T17:05:40.650 に答える