sapui5 odata вернуть модель после ошибки отправки изменений

Я отобразил список элементов (привязка агрегации) и кнопку редактирования для каждого элемента, чтобы редактировать значения элементов. Кнопка "Правка" открывает всплывающее окно, где я могу изменить значение (я).

Я использую двустороннюю привязку и вызываю submitChanges() после редактирования значений во всплывающем окне и нажатия всплывающей кнопки "ОК".

submitChanges имеет два обратных вызова - успех и ошибка. Теперь, когда из бэкэнда приходит ошибка (например, другой пользователь в данный момент редактирует элемент), я могу обработать и показать сообщение об ошибке. И данные не меняются в бэкэнде. Однако сама модель (во внешнем интерфейсе) изменяется, несмотря на ошибку.

Это то, что должно обрабатываться самой службой OData? Или я должен сделать что-то в веб-интерфейсе? Вызов resetChanges() бесполезен - после submitChanges нет изменений, которые нужно отменить.

Какие-нибудь примеры или лучшие практики?

1 ответ

Решение

Если submitChanges не удалась, и вы попали в обработчик ошибок, данные остаются в "отредактированной" форме в передней части (так что вы можете попытаться отправить снова).

Решать, что делать, зависит от вашей логики внешнего интерфейса:

  • по умолчанию продолжить редактирование и попытаться отправить позже
  • общей альтернативой является resetChanges (там есть изменения после неудачного submitChanges) и к oModel.refresh после этого получить новую копию из бэкэнда, чтобы пользователь мог снова начать редактирование

И - конечно, вы можете предложить пользователю выбор - сбросить все и получить свежую копию из бэкэнда - или, возможно, кнопку сброса в каждой строке, чтобы иметь возможность сбросить отдельные элементы по отдельности.

Другие вопросы по тегам