Если вы не понимаете мою статью, вам следует внимательно посмотреть на рисунок 1 , который изображает типичный сценарий, когда пользователь проходит через ряд экранов - вход в систему, меню, список, поиск, добавление и обновить. Когда я описываю движение FORWARDS, я имею в виду, что текущий экран приостановлен, пока активирован новый экран. Это происходит, когда пользователь нажимает ссылку на текущем экране. Когда я описываю движение как BACKWARDS, я имею в виду, что пользователь закрывает текущий экран (нажатием кнопки QUIT или SUBMIT) и возвращается к предыдущему экрану, который возобновляет обработку с того места, где он остановился. Это может включать в себя любые изменения, сделанные на экране, который был только что отменен.
Здесь важно поддерживать стек страниц, который не зависит от истории браузера: стек страниц поддерживается приложением и используется для проверки всех запросов. Они могут быть действительными в отношении браузера, но могут быть определены приложением как недействительные и обработаны соответствующим образом.
Стек страницы поддерживается двумя функциями:
- scriptNext () используется для обработки
Движение ВПЕРЕД, которое добавляет новый
запись в конце стека и
активирует новую запись.
- scriptPrevious () используется для обработки
движение НАЗАД, которое удаляет
последняя запись из стека и
повторно активирует предыдущую запись.
Теперь возьмем ситуацию в примере, когда пользователь перешел на страницу 4 экрана LIST, перешел на экран ADD, а затем вернулся на страницу 5 экрана LIST. Последним действием на экране ADD было нажатие кнопки SUBMIT, которая использовала метод POST для отправки на сервер сведений, которые были добавлены в базу данных, после чего она автоматически завершалась и возвращалась на экран LIST.
Если вы нажмете кнопку BACK, находясь на странице 5 экрана LIST, история браузера сгенерирует запрос на последнее действие на экране ADD, которое было POST. Это действительный запрос для браузера, но не для приложения. Как приложение может решить, что запрос недействителен? Проверяя со своим стеком страниц. Когда экран ADD был закрыт, его запись была удалена из стека страниц, поэтому любой запрос на экран, которого нет в стеке страниц, всегда можно считать недействительным. В этом случае неверный запрос может быть перенаправлен на последнюю запись в стеке.
Поэтому ответы на ваши вопросы должны быть очевидны:
- В: Где вы вызываете каждую функцию?
- A: Вы вызываете scriptNext ()
функция, когда пользователь выбирает
перейти к новому экрану,
и вызвать scriptPrevious ()
функция, когда пользователь завершает работу
текущий экран.
- Q: Какая функция должна быть вызвана
первый и какой следующий, а какой
третий?
- A: каждая функция вызывается в
ответ на действие, выбранное
пользователь, поэтому используется только одна функция
за один раз.
- В: Будут ли все функции вызываться в
все файлы в приложении?
- A: Все функции должны быть доступны
во всех файлах в приложении, но
вызывается только по выбору пользователя.
Если вы хотите увидеть эти идеи в действии, тогда вы можете загрузить мой пример приложения .