У меня есть представление, содержащее 2 сетки. Сетки поддерживаются 2 моделями. Отношения между двумя моделями - один ко многим (ассоциация без ключа).
Модели:
Ext.define('TestApp.model.association.Project', {
extend: Ext.data.Model,
fields: [
{
type: 'int',
name: 'id'
}, {
type: 'string',
name: 'project'
}, {
type: 'number',
name: 'allocation'
}, {
type: 'string',
name: 'comments'
}, {
type:'string',
name:'state'
}
]
});
Ext.define('TestApp.model.association.User', {
extend: Ext.data.Model,
fields: [{
type: 'int',
name: 'id'
}, {
type: 'string',
name: 'employee'
}, {
type: 'string',
name: 'location'
}, {
type: 'string',
name: 'department'
}, {
type: 'string',
name: 'manager'
}, {
type: 'number',
name: 'allocation'
}],
hasMany: [{
model: 'TestApp.model.association.Project',
// Note: use of 'role' is preferred over 'name'
role: 'projects',
// Define role for inverse association
inverse: {
role: 'user'
}
}]
});
После того, как я редактирую одну строку из дочерней части, я устанавливаю родительскую запись как грязную (dirty=true), а затем синхронизирую хранилище. После выполнения необходимой работы на сервере я отправляю ответ. После того, как я получу ответ, грязный флаг на дочерней части останется верным.
При отсутствии ассоциации, после получения ответа от сервера, грязный флаг сбрасывается автоматически.
Я создал скрипку для более подробной информации.
Как очистить грязный флаг от ассоциации после обновления?
Изменить
Я обновил скрипку, чтобы лучше показать свою проблему. Действия по воспроизведению:
- Выберите запись John Doe на верхней панели.
- Выберите Apple на нижней панели
- Редактировать столбец выделения и комментариев (доступен плагин редактирования строк). Нажмите Ок
- Нажмите кнопку Сохранить на панели инструментов второй сетки.
Запрос отправляется на сервер. Сервер отвечает json (ответ сервера жестко запрограммирован и всегда будет одинаковым).
Клиент не может установить дочернюю запись, полученную в ответе, и снять грязный флаг.
Почему делает это? Это ошибка?
originalValue!=currentValue
, поэтому в этом случае я думаю, что вы должны проверить после того, как данные будут установлены в поле, а затем каково его исходное значение. - person Tejas   schedule 29.09.2017