У меня есть две модели данных: Writer.AttributValeur
и Writer.Produit
.ExtJS, магазин, HasMany - BelongsTo и процесс обновления: howto?
Writer.Produit
имеет HasMany
/BelongsTo
отношения с Writer.AttributValeur
.
Таким образом, определение, как это:
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'
}
}
});
Теперь, когда я прочитал файл, прося "Produits", есть ответ AJAX, который работает отлично:
И в каждом «ряду» есть много Writer.AttributValeur
(я использовал их как «атрибуты» см. рисунок):
Проблема заключается в том, когда я вставляю в этой области «attributs
» в Writer.AttributValeur
, как это:
form.getRecord().attributs().add(newrecord);
Он отлично работает, но когда я звоню store.sync()
ничего не происходит. Поэтому я отмечаю вручную запись в dirty
:
form.getRecord().attributs().add(newrecord);
form.getRecord().setDirty();
form.getRecord().store.sync();
Теперь он послал, но attributs
не отправляются! См:
Как мне сделать, чтобы «добавить» это в процессе обновления?
Вы что, ? Также вы можете отметить фрагменты, которые были опущены из решения, размещенного в потоке Sencha? – dbrin
Вот еще один интересный подход с формами: http://stackoverflow.com/a/9891694/834424 – dbrin
Я работаю над этим 20/7, поэтому я отредактировал решение, потому что мое другое решение не сработало при вставке новых записей. Теперь (1) все работает нормально (2) он вызывает функцию родителя (= исходная функция 'getRecordData()' sencha), которая более безопасна, умнее и, вероятно, останется совместимой в долгосрочной перспективе (3), она намного короче, понять –