sapui5 odata вернуть модель после ошибки отправки изменений
Я отобразил список элементов (привязка агрегации) и кнопку редактирования для каждого элемента, чтобы редактировать значения элементов. Кнопка "Правка" открывает всплывающее окно, где я могу изменить значение (я).
Я использую двустороннюю привязку и вызываю submitChanges() после редактирования значений во всплывающем окне и нажатия всплывающей кнопки "ОК".
submitChanges имеет два обратных вызова - успех и ошибка. Теперь, когда из бэкэнда приходит ошибка (например, другой пользователь в данный момент редактирует элемент), я могу обработать и показать сообщение об ошибке. И данные не меняются в бэкэнде. Однако сама модель (во внешнем интерфейсе) изменяется, несмотря на ошибку.
Это то, что должно обрабатываться самой службой OData? Или я должен сделать что-то в веб-интерфейсе? Вызов resetChanges() бесполезен - после submitChanges нет изменений, которые нужно отменить.
Какие-нибудь примеры или лучшие практики?
1 ответ
Если submitChanges
не удалась, и вы попали в обработчик ошибок, данные остаются в "отредактированной" форме в передней части (так что вы можете попытаться отправить снова).
Решать, что делать, зависит от вашей логики внешнего интерфейса:
- по умолчанию продолжить редактирование и попытаться отправить позже
- общей альтернативой является
resetChanges
(там есть изменения после неудачногоsubmitChanges
) и кoModel.refresh
после этого получить новую копию из бэкэнда, чтобы пользователь мог снова начать редактирование
И - конечно, вы можете предложить пользователю выбор - сбросить все и получить свежую копию из бэкэнда - или, возможно, кнопку сброса в каждой строке, чтобы иметь возможность сбросить отдельные элементы по отдельности.