Sto lavorando a un'applicazione Sencha Touch di base che visualizza un elenco di messaggi di testo e il nome di un utente associato che ha inviato il messaggio. Ho seguito le esercitazioni online su come impostare le associazioni dei modelli, ma ogni esercitazione presuppone che il server produca dati con una struttura nidificata.Caricamento dati associati in Sencha Touch senza nidificazione
I dati con cui sto lavorando hanno una struttura piatta con relazioni di chiave primaria/esterna e non riesco a capire come ottenere Sencha per caricare entrambi i negozi da una singola risposta.
modello/user.js
Ext.define('App.model.User', {
extend: 'Ext.data.Model',
config: {
fields: [
{ name: 'uid', type: 'number' },
{ name: 'name', type: 'string' },
]
}
});
negozio/Users.js
Ext.define('App.store.Users', {
extend: 'Ext.data.Store',
config: {
model: 'App.model.User',
autoLoad: true,
}
});
modello/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'
}
}
}
});
negozio/Messages.js
Ext.define('App.store.Messages', {
extend: 'Ext.data.Store',
config: {
model: 'App.model.Message',
autoLoad: true,
}
});
I messaggi vengono caricati e visualizzati correttamente dalla mia applicazione (esempio di risposta JSON di seguito), ma non riesco a capire come caricare gli utenti associati nello store. Può essere risolto con una configurazione o è necessario un lettore personalizzato? Qualsiasi aiuto apprezzato!
Esempio 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."
}]
}
Funziona? –