Вообщем суть вопроса такова, есть 4 шага формы, все последующие шаги подгружаются аяксом, после удачного выполнения предыдущего шага.
Банальное решение это на сабмит формы повесить функцию, которая подгрузит следующий шаг, сабмит на который будет грузить следущий шаг и тд. Код превратиться в портянку вызовов функций, да и вообще считаю, что это бэд практик.
Может быть кто то встречался с подобным, как решали? какие технологии использовали?
Никакой портянки не будет. Будет одна функция и один колбэк, отличаться будет только параметры current_step и token, или как там вы их назовете, по которым на бэкенде будет определяться, какую часть формы отдать.
И это хорошая практика. Поддерживается также легко.
P.S. Грузить форму сразу или нет, зависит от ее размера и сложности. Если форма большая и сложная, и состояние промежуточных этапов зависит от предыдущих, надо разбивать.
Никита: Ангуляр такие вещи не регламентирует, он оперирует другими понятиями (контроллер/шаблон/директива/модель).
Я делал подобную форму на ангуляре, с серверной валидацией между шагами. У меня была модель (точнее ресурс), вместо предложеннго current_step у ресурса было свойство state, в зависимости от которого отображался тот или иной шаг и по которому сервер определял как правильно валидировать. У ресурса был метод $validate() который отправлял запрос на сервер (а сервер в свою очередь отдавал соответсвующие статусы и описание ошибок). Метод вызывался при нажати кнопки Next Step которая могла быть нажата при прохождении клиентской валидации.
Шаблон я грузил сразу и весь, так же сразу грузились все связанные данные, необходимые для заполнения. Вся логика заполнения была зашита на стороне js, поэтому кроме валидации с сервера ничего нее требовалось. В зависимости от того или иного состояние объекта и его свойств скрывались показывались определенные поля (ng-if) и т.п.
В общем, Ангуляр может помочь динамически изменять форму, предоставит удобные способы осуществления запросов (как ресурсы), но логику все равно вручную придется писать.
Никита: Я бы не полагался на концепцию и архитектуру ангуляра, однако это мое личное мнение, а я ненавижу ангуляр именно за его архитектуру, для меня весь ангуляр - сплошной антипатерн, начиная от логики в представлении и заканчивая его модульной системой.
p.s. в плане Вашего вопроса, полностью поддерживаю ответ данный Алексей Николаев
Можешь грузить сразу всю форму. А показывать только один шаг и менять их, сделать клиент валидацию (если возможно) - тогда придется делать только один запрос - при окончательном сабмите формы.
Но если валидацию необходимо делать после каждого шага и без сервера она не возможна - то множества запросов не избежать, и. имхо, это вполне нормально.
Поищи плагины для jQuery или своего фреймворка - наверняка их с десяток найдется.
Следующие шаги зависят от предыдущего заполнения, так же есть шаги - чекеры, которые в интервалах опрашивают сервер на новые данные. Поэтому и хочу узнать как люди решали такие задачи.