2014-09-02 5 views
5

ich kämpfen, um die verschiedenen Arten von Datenbindungen in ExtJS zu verstehen, und ich konnte das nicht begreifen:ExtJS 5 hasMany vs field.reference

Was ist der Unterschied zwischen „hasMany“ und „field.reference "wenn man Assoziationen an zwei Modellen definiert?

Wann sollte ich "hasMany" verwenden und wann ist "reference" besser?

Wenn ich zum Beispiel mehrere E-Mail-Adressen für einen Benutzer definieren möchte, was ist die beste Vorgehensweise, damit ich das E-Mail-Modell auch anderswo verwenden kann?

Ich bin mir bewusst, dass ich 3 Fragen habe, aber diese scheinen zusammen zu gehören.

Danke!

+0

Ich würde sagen, hasMany werden nicht in ExtJS überleben 6. – Alexander

+0

ich in der gleichen Situation bin. Momentan hat es in ExtJS 5.0.1 anscheinend nicht richtig funktioniert. –

+1

@benoror da gab es sicherlich Probleme damit, die in 5.1.1 fortgefahren sind. – Thomas

Antwort

8

Eines der besten Pannen auf das ich gesehen habe, ist hier:

http://moduscreate.com/associations-in-ext-js-5/

Es geht in vielen Details, und speziell an Ihre dritte Frage in Bezug auf E-Mail-Adressen - weil der Verein jetzt Sie müssen ein anderes E-Mail-Modell verwenden, wenn Sie es an ein anderes übergeordnetes Element anfügen möchten, z. B. eine CustomerEmail-Klasse zum Anhängen an den Kunden und eine AdminEmail-Klasse zum Anhängen an den Administrator.

Es ist ein bisschen Detail für den Grund für die Änderung hier:

http://www.sencha.com/blog/deep-dive-into-ext-js-5-data

Deklarieren Verbände ist ein weiterer Bereich, in Ext JS 5, wo wir vorformulierten Code Anforderungen reduziert haben. In früheren Releases wurde für die Konfigurationen hasMany, hasOne und anglesTo vorausgesetzt, dass Sie manuell symmetrische Deklarationen auf beiden "Seiten" einer Zuordnung verwalten. Dies ist nicht mehr der Fall. Sie können eine Assoziation entweder in der zugeordneten Klassen deklarieren (obwohl dies normalerweise auf der Seite "many" ist).

+1

Ich bin gerade auf diese Modus Create Ressource gestoßen. Es ist ziemlich gut. – Thomas