2017-07-03 1 views
2

Wie erbt man von einem Modell, das hasOne und hasMany Beziehungen hat? Es ist notwendig, diese Beziehungen zu bewahren.Vererbung von Modellen mit Beziehungen (hasOne und hasMany)

ich ein Beispiel in der Sandbox gemacht: https://fiddle.sencha.com/#view/editor&fiddle/22fi

Das Modell Fiddle.model.User2 von Fiddle.model.User vererbt wird.

In der Datei app.js User2 stelle ich eine Verbindung zum Repository her. Wenn Sie User verbinden, dann wird alles funktionieren. Aber wenn das User2 Modell verwendet, funktionieren die Verknüpfungen nicht: die getAddress() Methode gibt leer zurück, und die getUser() Methode funktioniert nicht.

+0

Die ExtJS-Assoziationen haben so viele Probleme (zumindest in v4.2), dass es viel einfacher ist, eigene Assoziationen zu schreiben. Wenn Sie die ursprünglichen Zuordnungen verwenden möchten, würde ich jedoch empfehlen, einen Haltepunkt in das ['Ext.data.Model'] (https://docs.sencha.com/extjs/6.2.0/classic/src/Model) einzufügen. js-1.html) im 'Model.onExtended()' Teil. – MarthyM

+1

@MarthyM Ich habe gehört, dass die Assoziationen in ExtJS 5 und 6 besser wurden; So viel besser, dass sie neue Funktionen für v6 finden mussten, an denen ihre Ingenieure absolut scheitern könnten, vor allem ChainedStore. – Alexander

+0

Danke für die Antworten. Verbände funktionieren perfekt. Aber es gibt Probleme mit der Vererbung. Ich werde versuchen, den technischen Support von Sencha Inc. zu kontaktieren. –

Antwort

1

Sencha Technical Support Antwort

Leider ist dies derzeit nicht unterstützt. Aber wir haben eine offene Feature-Anfrage, um diese Funktionalität hinzuzufügen.

Bitte nicht, da es sich um eine Feature-Anfrage und nicht um einen Fehler handelt, gibt es keine Garantie dafür, wann oder ob es dem Framework hinzugefügt wird.

0

Von the code haben sie es entweder vergessen oder es wird nicht unterstützt. Für eine definitive Antwort müssen Sie ein Ticket mit Sencha-Unterstützung erstellen. Die Funktionen für alles, was zusammen aus der aktuellen Klasse gemischt wird und die übergeordnete Klasse haben einen proto Parameter, den die Elternklasse enthält:

Model.initIdentifier(data, cls, proto); 
    Model.initFields(data, cls, proto); 
    Model.initValidators(data, cls, proto); 

während Verbände keine Proto Parameter haben, so dass sie nur von der genommen aktuelle Klasse:

 Model.initAssociations(schema, data, cls); 

Es kann jedoch durchaus möglich sein, dass dies beabsichtigt ist. Die Dokumentation von z.B. fields heißt es ausdrücklich:

Erweiterung eine Modellklasse alle fields von den übergeordneten Klasse/Vorfahren Klassen erben.

während die Dokumentation von z.B. hasOne Staaten (Betonung von mir):

Ein oder mehrere Ext.data.schema.HasOne Verbände für dieses Modell.

Bitte erkundigen Sie sich beim Sencha Support.

+0

Danke für die Antwort! –

Verwandte Themen