Sencha Touch вложенный JSON - загрузка магазина с ассоциациями - PullRequest
0 голосов
/ 21 декабря 2011

Я хочу загрузить вложенный JSON в хранилище, но данные отображаются неправильно. Нет проблем с одним regModel, но я не могу заставить работать ассоциации.

// JSON in test.json

{"message" : {

"returnCodes": [
        {
            "value": "0",
            "code": "200",
            "description": "OK"
        },
        {
            "value": "0",
            "code": "200",
            "description": "OK"
        }
    ]
}}

// Model with associations 

Ext.regModel("ReturnCode", {

    fields : [{
        name : "value",
        type : "string"
    }, {
        name : "code",
        type : "string"
    }, {
        name : "description",
        type : "string"
    }],

    belongsTo: "Message"
});

Ext.regModel("Message", {

    hasMany: { 
         model : "ReturnCode", 
         name : "returnCodes" 
    }
});

// Store
var jobStore = new Ext.data.Store({

model : 'Message',
autoLoad: true,

proxy : {
type : 'ajax',
url: 'test.json',

reader : {
    type : 'json',
    root : 'message.returnCodes'         
}
}});

// List
var list = Ext.extend( Ext.List, {

fullscreen : true,
store : jobStore,
grouped : false,
itemTpl : '<div>{code}</div>'      // no output

});

Когда я заглядываю в хранилище, все данные хранятся в необработанном разделе объекта хранилища, но ничего в разделе данных. В списке для обоих объектов returnCode создается элемент списка, но он не заполняется данными, поскольку сопоставление не удалось -> itemTpl не получает данных.

1 Ответ

0 голосов
/ 20 марта 2012

Попробуйте сначала объявить модель сообщения, затем добавьте associationKey:'returnCodes' в hasMany{} в модель сообщения. Также измените корень читателя на message.

Эта ссылка также может быть полезна для вас.

...