我正在开发一个基本的 Sencha Touch 应用程序,该应用程序显示文本消息列表和发送消息的关联用户的名称。我已经按照在线教程了解如何设置模型关联,但每个教程都假设服务器生成具有嵌套结构的数据。
我正在使用的数据具有具有主/外键关系的平面结构,我无法弄清楚如何让 Sencha 从单个响应中加载两个存储。
模型/User.js
Ext.define('App.model.User', {
extend: 'Ext.data.Model',
config: {
fields: [
{ name: 'uid', type: 'number' },
{ name: 'name', type: 'string' },
]
}
});
商店/Users.js
Ext.define('App.store.Users', {
extend: 'Ext.data.Store',
config: {
model: 'App.model.User',
autoLoad: true,
}
});
模型/Message.js
Ext.define('App.model.Message', {
extend: 'Ext.data.Model',
config: {
fields: [
{ name: 'id', type: 'number' },
{ name: 'uid', type: 'number' },
{ name: 'message', type: 'string' }
],
associations: [{
type: 'belongsTo',
model: 'App.model.User',
primaryKey: 'uid',
foreignKey: 'uid'
}],
proxy: {
type: 'jsonp',
url: 'messages.json',
reader: {
type: 'json',
rootProperty: 'req_messages'
}
}
}
});
商店/Messages.js
Ext.define('App.store.Messages', {
extend: 'Ext.data.Store',
config: {
model: 'App.model.Message',
autoLoad: true,
}
});
我的应用程序正确加载并显示了这些消息(下面的示例 JSON 响应),但我无法弄清楚如何将关联的用户加载到商店中。这可以通过配置解决,还是我需要自定义阅读器?任何帮助表示赞赏!
示例 JSON
{
"users": [{
"uid": "1",
"name": "John"
}, {
"uid": "3033",
"name": "Noah"
}],
"req_messages": [{
"id": "539",
"uid": "1",
"message": "my message"
}, {
"id": "538",
"uid": "1",
"message": "whoops"
}, {
"id": "534",
"uid": "3033",
"message": "I love pandas."
}]
}