Ich versuche, eine einfache ExtJS5 App gegen ein Restful RubyonRails Backend zu erstellen. Wenn ich ein Modell instanziiere, füllt ExtJs aus irgendeinem Grund das Feld "idProperty" mit dem Namen des Modells (und des Counters). z.B.
{"Traffic_id": "MyApp.model.Person-1", "externe_id": 0, ...
Ich dachte, das Feld "idProperty" ist im Wesentlichen der Primärschlüssel des Datensatzes und wird normalerweise gesetzt, wenn der Datensatz in den DB eingefügt wird (Autoincrement)
Daher sollte dieses Feld null oder ähnlich sein, da das Modell dem Speicher noch hinzugefügt und mit dem Back-End synchronisiert werden muss.
Was noch mehr Erstaunliches ist, ist, dass das Feld als 'int' definiert ist und ExtJS einen String hineinlegt!
Kann mir jemand sagen, was vor sich geht?
Peter
Unten ist eine app.js zu Geige mit:
%Vor% Setze Konfigurationsoptionen: persist: false
. Beim Erstellen wird der Wert nicht an den Server gesendet. Diese Option ist nützlich, wenn Felder zum Beibehalten des Status auf dem Client verwendet werden, aber nicht auf dem Server beibehalten werden müssen. Ext.data.field.Field.persist
ExtJS weist neu erstellten Modellen eine "provisorische" ID zu; Es kann zwischen Modellen, die auf der Client-Seite erstellt wurden, die noch nicht gespeichert wurden ("Phantom" -Modelle), und solchen, die heruntergeladen wurden, unterscheiden. Als solches weiß es, wann create
vs update
aufgerufen werden muss, und es wird (ich denke aus dem Speicher) die ID löschen, wenn es auf den Endpunkt create
REST hochlädt.
Er benötigt die ID, da das neu erstellte Modell in Filialen gehen kann (z. B. für die Sitzung, wenn nichts anderes).
Der Stil der ID, die Sie sehen, stammt vom Standardgenerator sequential
.
Siehe Ссылка für mehr.
>Fügen Sie ein weiteres Feld mit einer calculate-Funktion hinzu und behalten Sie Ihr Modell als falsch. Verwenden Sie dieses Feld in Ihrer View anstelle Ihrer idProperty:
%Vor%Ich habe einen Workaround gemacht. Legen Sie nach der Erstellung der Modellinstanz die ID-Eigenschaft auf null fest.
%Vor%