Ich arbeite an einer grundlegenden Sencha Touch-Anwendung, die eine Liste von Textnachrichten und den Namen eines zugeordneten Benutzers, der die Nachricht gesendet hat, anzeigt. Ich habe die Online-Tutorials zum Einrichten von Modellassoziationen verfolgt, aber in jedem Lernprogramm wird davon ausgegangen, dass der Server Daten mit einer verschachtelten Struktur erstellt.Laden zugehöriger Daten in Sencha Touch ohne Verschachtelung
Die Daten mit denen ich arbeite haben eine flache Struktur mit Primär-/Fremdschlüsselbeziehungen, und ich kann nicht herausfinden, wie Sencha erhält aus einer einzigen Reaktion beiden Geschäfte zu laden.
Modell/user.js
Ext.define('App.model.User', {
extend: 'Ext.data.Model',
config: {
fields: [
{ name: 'uid', type: 'number' },
{ name: 'name', type: 'string' },
]
}
});
store/Users.js
Ext.define('App.store.Users', {
extend: 'Ext.data.Store',
config: {
model: 'App.model.User',
autoLoad: true,
}
});
Modell/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'
}
}
}
});
store/Messages.js
Ext.define('App.store.Messages', {
extend: 'Ext.data.Store',
config: {
model: 'App.model.Message',
autoLoad: true,
}
});
Die Nachrichten werden durch meine Anwendung (Probe JSON Antwort unten) korrekt geladen und angezeigt, aber ich kann nicht herausfinden, wie die zugehörigen Benutzer in den Laden geladen werden zu bekommen. Kann dies mit einer Konfiguration gelöst werden, oder brauche ich einen benutzerdefinierten Leser? Jede Hilfe wird geschätzt!
Beispiel 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."
}]
}
Hat es funktioniert? –