Я разрабатываю «пользовательский портал», и я зациклился на том, как правильно проектировать наше приложение. Портал имеет вид как на картинку ниже, где:Угловая + ui-router архитектура параллельных состояний
- Тележки выпадающих где пользователь может выбрать «текущую» корзину (может быть пустыми)
- а. Кнопка, перенаправляющая на страницу текущих данных корзины.
- Приложение меню. Где мы можем перемещаться по f.e по каталогам
- Основная область применения.
У меня есть следующий рабочий процесс:
- Пользователь переходит к меню каталогов.
адрес: домен/каталоги; состояние: каталоги
Пользователь выбрать каталог и посмотреть товары в каталоге
URL: домен /каталоги/catalog1ID; состояние: catalogs.detail.
Пользователь может нажать на плитке продукта и перейти к продукту детального
URL: домен /каталоги/catalog1ID/product1ID; состояние: catalogs.detail.product
Выглядит естественно и ничего особенного на данный момент. Теперь основная проблема заключается в том, как интегрировать в этот рабочий процесс функциональность «корзины покупок». Я имею в виду, что если пользователь выбирает корзину для покупок, данные по представлениям могут отличаться (потому что корзина для покупок связана с разными клиентами, и мы можем показывать разные каталоги/цену/продукты для разных клиентов). F.e. Цена Продукта 1 из Каталога 1 может отличаться для корзины покупок 1 и корзины покупок 2, а корзина для покупок не выбрана. Я пытаюсь найти ответы на следующие вопросы:
- Где сохранить выбранную корзину покупок (состояние/url)?
- Как сообщить текущему состоянию, что изменилась корзина?
- Как сделать F5/refresh правильно работать (f.e если мое текущее состояние catalogs.detail.product и у меня есть корзина для покупок)?
Спасибо за быстрый ответ. Нет проблем с совместным использованием данных. Мы используем службу shoppingCartService, которая вводится в контроллеры (это даже лучше, чем директива).
Проблема, что у нас есть 2 parrallel (ui-router-extend): ** каталог ** и ** shoppingCart ** где ** каталог ** зависит от ** shoppingCart **. Но у нас есть URL, где мы сохраняем url для ** каталога ** state (catalogs/catalog1ID/product1ID). Таким образом, мы можем легко обновить ** каталог ** состояние при обновлении/F5. Проблема заключается в том, где сохранить данные о состоянии покупки в Cart для обновления. –