2012-11-19 12 views

Antwort

26

Ich habe vor kurzem eine sehr schmerzhafte Lernkurve mit den ExtJS-Assoziationen durchgemacht und bin auf einige nützliche Artikel sowie meine eigenen Probleme gestoßen. Hier ist die Zusammenfassung für diejenigen, die die gleichen Schmerzen haben.

Regeln für HasMany Verbände in ExtJS

  • immer Ihre Proxies in Ihrem Modelle setzen, nicht Ihre Shops, es sei denn, Sie einen sehr guten Grund, nicht zu haben [1]
  • Sie Ihr Kind immer erforderlich Modelle, wenn in hasMany Beziehungen verwendet. [2]
  • immer foreignKey verwenden, wenn Sie die Kinder nach Belieben zu ladende
  • immer associationKey verwenden, wenn Sie die Kinder in die gleiche Antwort wie die Mutter
  • Sie kehren beide foreignKey und associationKey verwenden können, wenn Sie
  • mögen Name
  • immer Ihre hasMany Beziehungen
  • immer voll qualifizierte Modellnamen in Ihrer hasMany Beziehung
  • Betrachten Sie verwenden, um den Leser root einen aussagekräftigen Namen geben (außer „data“)
  • Das Kind Modell tut keine belongsTo Beziehung brauchen für die hasMany

zu arbeiten [1] Das Geschäft wird sein Modell des Proxy erben, und Sie können es immer außer Kraft setzen
[2] es einfach zu machen, und mögliche zirkuläre Referenzen zu vermeiden, Sie kann sie in App erfordern.js

http://extjs-tutorials.blogspot.com/2012/05/extjs-hasmany-relationships-rules.html

Regeln für hasOne und Gehört Verbände in ExtJS

  • den Proxy im Modell Stoßen, wenn Sie einen sehr guten Grund haben, nicht zu
  • immer voll qualifizierten Modell verwenden Name
  • Setzen Sie immer den getterName
  • Setzen Sie immer den SetterName
  • Immer die associationKey gesetzt, wenn der Fremdkörper in der gleichen Antwort wie dieses Objekt zurückgegeben
  • immer die foreignKey gesetzt, wenn Sie den Fremdkörper nach Belieben
  • Betrachten Sie die instanceName etwas zu ändern kürzer
  • laden mögen
  • Der Getter verhält sich unterschiedlich, abhängig davon, ob das Fremdobjekt geladen ist oder nicht. Wenn es geladen ist, wird das fremde Objekt zurückgegeben. Andernfalls müssen Sie einen Callback übergeben, um es zu erhalten.
  • Sie sollten die Eigenschaft name festlegen, wenn Sie diese Zuordnung überschreiben möchten. wenn die ID-Feld des Muttermodell
  • Sie brauchen keine belongsTo Beziehung für eine hasMany
  • die primaryKey Eigenschaft an die Arbeit ist nicht „id“
  • Manchmal müssen Sie Anwendungen verwenden, oder erfordert für die belongsTo Verein . Watch für zirkuläre Referenzen obwohl.
  • Aufruf der Setter() - Funktion scheint die Instanz nicht zu setzen. Set object.belongsToInstance = obj wenn Aufruf der Setter().

http://extjs-tutorials.blogspot.com/2012/05/extjs-belongsto-association-rules.html

Misc

  • Wenn Sie Ihre Daten auf einem Raster anwenden möchten, stellen Sie sicher, dass Sie rufen recon() auf dem Gitter der neue Speicher mit
  • Ihre " foreignKey "property wird als lokaler Filter auf den ExtJS-Speicher angewendet; Wenn Sie sehen, dass die Daten über das Netzwerk geladen werden, aber nicht in Ihrem Grid angezeigt wird, vergewissern Sie sich, dass Ihr Modell den Wert foreignKey als Feld definiert hat oder der lokale Filter die Daten ausschließt. Um zu testen, ob dies der Fall ist, Haken in das Geschäft der „Last“ Ereignis und rufen store.clearFilters() und sehen, ob Ihre Daten zeigt sich
+3

+1 für 'erfordert: [...]' als Ich bin verblüfft herauszufinden, dass das mein Problem war. Wirklich ärgerlich bei ExtJs! – HDave

Verwandte Themen