Ich habe zwei Datenmodelle: Writer.AttributValeur
und Writer.Produit
.ExtJS, Geschäft, HasMany - BelongsTo und Update-Prozess: howto?
Writer.Produit
hat HasMany
/BelongsTo
Beziehung mit Writer.AttributValeur
.
So die Definition wie folgt lautet:
Ext.define('Writer.AttributValeur', {
extend: 'Ext.data.Model',
fields: [{
name: 'id',
type: 'int',
useNull: true
},
'description',
'val'
],
belongsTo: 'Writer.Produit'
});
Ext.define('Writer.Produit', {
extend: 'Ext.data.Model',
fields: [{
name: 'id',
type: 'int',
useNull: true
},
'titre',
'description'
],
hasMany: {
model: 'Writer.AttributValeur',
name: 'attributs'
}
});
var store = Ext.create('Ext.data.Store', {
model: 'Writer.Produit',
autoLoad: true,
autoSync: true,
proxy: {
type: 'ajax',
api: {
read: 'json/liste_view/',
create: 'json/item/?mode=create',
update: 'json/item/?mode=update',
destroy: 'json/item/?mode=destroy'
},
reader: {
type: 'json',
successProperty: 'success',
root: 'data',
messageProperty: 'message'
},
writer: {
type: 'json',
writeAllFields: true,
root: 'data'
}
}
});
Nun, wenn ich die Datei lesen und bat um "Produits", gibt es eine AJAX Antwort, die perfekt funktioniert:
Und in jeder "Zeile" gibt es viele Writer.AttributValeur
(ich habe sie als "attributs" aliased) siehe Bild):
Das Problem ist, wenn ich ein Writer.AttributValeur
in diesem "attributs
" Feld einfügen, wie folgt aus:
form.getRecord().attributs().add(newrecord);
Es funktioniert perfekt, aber wenn ich store.sync()
nichts passiert nennen. So markieren ich von Hand den Rekord als dirty
:
form.getRecord().attributs().add(newrecord);
form.getRecord().setDirty();
form.getRecord().store.sync();
Jetzt ist es geschickt, aber die attributs
werden nicht gesendet! Siehe:
Wie soll ich tun, um "add" diese in den Update-Prozess?
Hast du sehr, dass es funktioniert Können Sie auch Teile notieren, die in der Lösung, die auf dem Sencha-Thread gepostet wurde, weggelassen wurden? – dbrin
Hier ist ein weiterer interessanter Ansatz mit Formularen: http://stackoverflow.com/a/9891694/834424 – dbrin
Ich habe am 20/7 daran gearbeitet, also habe ich die Lösung bearbeitet, weil meine andere Lösung beim Einfügen neuer Datensätze nicht funktioniert hat. Jetzt (1) funktioniert alles gut (2) es ruft die Funktion des Elternteils auf (= Senchas ursprüngliche 'getRecordData()' Funktion), die sicherer, schlauer ist und wahrscheinlich auf lange Sicht kompatibel bleiben wird (3) sie ist viel kürzer und einfacher verstehe –