У вас есть пользовательский интерфейс, который позволяет пользователям управлять своими foos стандартным способом CRUD: у вас есть «представление списка» и «подробное представление», последнее используется для создания новых foos или изменения существующих foos. «Сохранить» сохраняет изменения и возвращает к списку, нажатие кнопки «Назад» в браузере вызывает предупреждение, а затем отменяет изменения. Здесь нет ничего удивительного.

basic UI

Теперь вы хотите предложить пользователю возможность загрузить красивый PDF-файл foo. Добавить кнопку в список не проблема, но что делать с подробным представлением? Проблема в том, что изменения необходимо сохранить перед созданием PDF-файла.

Пока я вижу два способа исправить это, и ни один из них мне не нравится.

Вариант 1. Добавляйте к каждому действию префикс "Сохранить и...". Это делает работу, но это не очень красиво:

prefix

Вариант 2. Заставьте пользователя сохранить изменения перед выполнением действий. Недостаток: теперь для сохранения и возврата к списку требуется два клика (вторая версия появляется после того, как пользователь нажмет «Сохранить» в первой версии):

save & close

Я предполагаю, что это распространенная проблема, поэтому, вероятно, мне не хватает простого элегантного решения. Что это?

2
Heinzi 25 Ноя 2017 в 15:02
Может быть, это не имеет значения, но save не закрывает форму? Кроме того, как часто пользователи будут загружать лист продукта из режима редактирования/создания?
 – 
xpy
26 Мар 2018 в 17:08

1 ответ

Обычное решение:

Многие приложения, которые экспортируют данные в другие форматы, позволяют сделать это в любое время.

Что касается требования сохранения перед экспортом:

  • Сохраните весь или часть вашего объекта Foo по мере его изменения.

  • Больше нет необходимости сохранять объект Foo вручную.

  • Экспорт данных больше не занимает два клика.

При этом кнопка сохранения заменяется событиями OnChanged для полей.

Чтобы сохранить условия гонки при нажатии кнопки «Загрузить PDF» сразу после автоматического сохранения при изменении полей, вы также заставляете кнопку «Загрузить PDF» сохранять всю полезную нагрузку объекта Foo.

1
Necromunger 25 Ноя 2017 в 16:05