2

loadData メソッドを使用して JSONStore にデータをロードしようとしていますが、ストアに単一のレコードしかロードしていません。ここにコードスニペットがあります

var myRecord = Ext.data.Record.create([
    {
        name: 'Rid',
        type: 'string',
        mapping: 'id.value'
    }, {
        name: 'accountId',
        type: 'string',
        mapping: 'accountId.value'
    }, {
        name: 'nickName',
        type: 'string'
    }
]);

var myStore = new Ext.data.JsonStore({
        storeId: 'storeID',
        fields: myRecord,           
        root: 'recipientResponse',
        autoLoad: false

});

myStore.loadData(jsonResponse,true);

これは、loadData メソッドに渡す JSON 応答のサンプルです。

{ recipientResponse: [
    {
        "id":{
            "value":"58144340bedf4a328669c98b29446b6b"
        },
        "locked":null,
        "accountId":{
            "type":null,
            "value":"1122334455"
        },
        "nickName":"Dad",
        "customerId":{
            "value":"partialpay7"
        },
        "accountType":"CHECKING", 
        "emailAddress":"blah@blah.com",
        "person":null,
        "deleted":null,
        "txPasscode":"Cho"
     },
     {
        "id":{
            "value":"5fb1e201a939433faea6c39e33caef78"
        },
        "locked":null,
        "accountId":{
            "type":null,
            "value":"6655223311"
        },
        "nickName":"Jane Doe",
        "customerId":{
            "value":"partialpay7"
        },
        "accountType":"CHECKING",
        "emailAddress":"blah@blah.com",
        "person":null,
        "deleted":null,
        "txPasscode":"Cho"
     },
     {
        "id":{
             "value":"a24b32fd180e4886b1f562d9a3b2f0ce"
        },
        "locked":null,
        "accountId":{
            "type":null,
            "value":"998877665544"
        },
        "nickName":"Sam Jones",
        "customerId":{
            "value":"partialpay7"
        },
        "accountType":"CHECKING",
        "emailAddress":"blah@blah.com",
        "person":null,
        "deleted":null,
        "txPasscode":"Cho"
     }
]}

ありがとう

4

3 に答える 3

6

を設定する必要がありますidProperty

var myStore = new Ext.data.JsonStore({
    storeId: 'storeID',
    fields: myRecord,           
    root: 'recipientResponse',
    autoLoad: false,
    idProperty: 'Rid'
});

そうしないと、デフォルトで「id」になるため、json リーダーはオブジェクト全体{id: ...}を ID として使用します。最終的に、これらの ID はデータ コレクションのキーとして使用され、すべて「[object Object]」のような同じ文字列にキャストされます。理由は次のとおりです。

于 2013-06-22T00:10:34.413 に答える
0

jsonResponse オブジェクト/配列または文字列ですか?

これは文字列です。次を使用してみてください。

myStore.loadData(Ext.JSON.encode(jsonResponse),true);

Sencha: JSON エンコード

于 2013-06-17T09:57:34.943 に答える
0

loadRawDataではなく loadDataを使用してみてください。

于 2014-03-18T04:25:40.577 に答える