2010-12-20 6 views
3

Ich versuche, das Ereignis nach dem Erstellen des neuen Datensatzes im ExtJS-Speicher zu behandeln und auf dem Server zu speichern. Aber ich habe ein Problem - Schreiben Ereignis auslösen nur nach Update-Aktion. Dokumentation sagt:Extjs. Schreibvorgang kann nicht nach store.save() mit der Aktion create abgefangen werden.

@Event Schreib Fires, wenn der Server 200 nach einer Ext.data.Api.actions CRUD Aktion zurück. Erfolg der Aktion in das Ergebnis bestimmt wird [ ‚successProperty‘] Eigenschaft (Hinweis für RESTful speichert, eine einfache 20x Antwort ausreichend ist für die Aktionen „zerstören“ und „update“. Die „create“ Aktion sollte sollte 200 entlang mit einer Datenbank pk) zurückgeben.

Jetzt habe ich eine solche Antwort vom Server: [{"tid": 5, "action": "CityGrid", "type": "rpc", "method": "create", "result": {"msg": "saved", "data": {}, }}]

Ich denke, dass ein database.pk von erstellte Objekt zu Serverantwort Hinzufügen Problem lösen sollte, aber ich habe keine Ahnung, wie es zu tun. Ich habe dieses ... "data": {"Id":my_object.id} versucht, aber ohne Wirkung.

Antwort

2

Dieses Beispiel: http://dev.sencha.com/deploy/dev/examples/writer/writer.html das Erstellen zurück:

{ 
    "success":true, 
    "message":"Created record", 
    "data": {"first":"sdfds","last":"sdfsdf","email":"[email protected]","id":10} 
} 

So einfach zurückgeben speichern Datensatz für neues Objekt in Reader .root Eigenschaft.

+0

Auch die Dateneigenschaft kann Array von Datensätzen asnoticed Mchl sein. Es ist verwendbar, wenn Daten in einem Stapel gespeichert werden. – Shamanu4

1

Versuchen Sie idProperty Ihres JsonReader auf den Namen Ihres PK. Außerdem glaube ich, dass data: sollte ein Array seine "data": [{"id": ....}] aber ich könnte falsch sein: P

+1

Ihr Rat ist O.K - Ereignis wird jetzt ausgelöst. Aber die Antwort von Alerion ist nützlicher - der Speicher wird mit korrekten Daten aktualisiert, wenn alle Felder empfangen werden, nicht nur der PK. – Shamanu4

+0

Und es muss nicht ein Array sein scheint es;) – Mchl