Ich versuche, ein Modell mit einer hasMany Association zu erstellen, aber wenn ich versuche, auf den Speicher zuzugreifen, ist es leer.ExtJS 6: laden verschachtelte Daten durch Erstellen neuer Instanz von Modell
Dies ist meine Modelle:
Basemodel:
Ext.define('Test.model.schema.BaseModel', {
extend: 'Ext.data.Model',
schema: {
namespace: 'Test.model'
}
});
UserModel:
Ext.define('Test.model.user.UserModel', {
extend: 'Ext.data.Model',
fields: [
{
name: 'displayName',
type: 'string'
}
],
hasMany: [
{
name: 'roles',
model: 'user.RoleModel', // also try with Test.model.user.RoleModel
associationKey: 'roles'
}
]
});
Rolemodel:
Ext.define('Test.model.user.RoleModel', {
extend: 'Ext.data.Model',
fields: [
{
name: 'label',
type: 'string'
}
]
});
Das ist meine Anwendung ist:
Ext.application({
name: 'Test',
models : [
'Test.model.schema.BaseModel',
'Test.model.user.RoleModel',
'Test.model.user.UserModel'
],
appFolder : contextPath + '/' + staticsPath + '/js/app',
controllers : ['router.TestRouterController'],
defaultToken : 'auth'
});
In meinem Controller versuche ich mein Benutzermodell wie diese zu erstellen:
var user = Ext.create('Test.model.user.UserModel', {
displayName : 'Mick P.',
roles : [
{
label: 'test'
}
]
});
Samt mit JSon.
Wenn ich user.roles tun(). GetAt (0) Ich habe null und user.roles(). Data.items leer.
Siehst du, was ich falsch mache?
EDIT 1: Eine Geige meines Problems: https://fiddle.sencha.com/#fiddle/1e54
EDIT 2: Es funktioniert, wenn ich meine Daten mit einem Speicher laden. Aber warum nicht durch direktes Laden eines Modells.
Warum haben Sie ein Basismodell und ein Schema erstellt, aber Sie verwenden es nicht? Wenn Sie das Basismodell, das Schema und die Zuordnungen verwenden, müssen Ihre anderen Modelle das Basismodell erweitern. – bakamike
Exact Ich brauche keine Basis, aber keine Basis zu erweitern. Ich habe meine Geige verändert. Jetzt muss der Benutzer nicht auf den absoluten Pfad für Fiddle.model.Role verweisen.Ich muss nur Role sagen, weil ich im Basismodell Namespaces definiert habe. Versuchen Sie, das Basismodell zu löschen, und Sie werden den Unterschied sehen. –