テキストメッセージのリストとメッセージを送信した関連ユーザの名前を表示する、基本的なSencha Touchアプリケーションを開発中です。モデルの関連付けを設定する方法については、オンラインでチュートリアルに従ってきましたが、各チュートリアルではサーバーがネスト構造のデータを生成することを前提としています。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."
}]
}
問題なく動作しますか? –