0

Die Klasse Ext.data.Model repräsentiert die Back-End-Modelle. Und genau wie im Servercode können einige Felder eines anderen deklarierten Modelltyps über die Eigenschaft reference sein. Ich habe herausgefunden, dass die Verwendung der getAssociatedData()-Funktion eines Modells ein Objekt mit all diesen referenzierten Feldern zurückgibt. Sie enthalten jedoch nur das Datenobjekt des Referenzobjekts, das nicht vollständig initialisiert wurde Ext.data.Model s, wodurch ein primitiver Objektzugriff erzwungen wird und es keine Möglichkeit gibt, die konfigurierten Proxys des Modells zum Laden/Speichern zu verwenden. Ist das die richtige/einzige Möglichkeit, diese Funktionalität zu nutzen? Wir haben auch nach einer Möglichkeit gesucht, Spalten aus referenzierten Feldern in einem Gitter hinzuzufügen, aber es scheint nicht zu funktionieren ... Ich fange an zu zweifeln, wie nützlich es ist, referenzierte Felder zu deklarieren.Extjs: Wie verwenden Sie die Associate-Daten eines Feldverweises eines Modells richtig?

Beispielcode:

Ext.define('MyApp.ModelA', { 
    extend: 'Ext.data.Model', 
    fields: [{ 
     name: 'modelb', 
     reference: 'MyApp.ModelB' 
    }] 
}); 

Ext.define('MyApp.ModelB', { 
    extend: 'Ext.data.Model', 
    fields: [{ 
     name: 'modelId', 
     type: 'int' 
    }] 
}); 

//... 
var modelA = new MyApp.ModelA().load(); 
var modelB = modelA.getAssociatedData().modelb; //This is the only way to access it. 
var modelBId = modelB.get('modelId') //This returns undefined because the function .get doesn't exist. 
var modelBId = modelB.id; //This works because it is a simple object property access. 
//... 
+0

Versuchen Sie, dies zu tun 'var modelB = modelA.getModelb()' –

Antwort

0

Wie Chad Peruggia sagte, scheint es, dass ExtJS spezielle Getter für reference Felder erzeugt, die den Feldnamen entsprechen. Die Verwendung von getAssociatedData() gibt nur die primitive Form dieser Objekte zurück (nur ihre data Werte), aber unter Verwendung des speziellen Getters (in meinem Fall getModelb()) gibt sie ein vollwertiges Modell zurück, das mit den gegebenen Daten initialisiert wurde.