angular UI Router - когда использовать абстрактный режим/вложенность/именованные представления?

Не удалось понять это из документов:

Мой вариант использования: большой SPA с несколькими «виджетами» или «приложениями» на странице — каждое с контроллером, данными и шаблоном. желательно, чтобы каждый из них был представлением. В настоящее время каждый шаблон загружается с помощью ng-include, что одновременно раздражает, не разделяет интересы и не очень хорошо работает, поскольку контроллер представления может быть инициализирован до того, как основной ctrl будет разрешен — по этой причине мы переключились на маршрутизатор пользовательского интерфейса. URL-адреса не являются вложенными — например, URL-адрес /page может содержать Listview, userview и т. д.

Я хочу переместить это на маршрутизатор пользовательского интерфейса (после того, как я уже переместил существующую маршрутизацию на маршрутизатор пользовательского интерфейса и проверил, что все работает правильно), и я не уверен, как правильно компоновать виджеты/представления вместе. Должен ли я использовать абстрактное представление, которое будет содержать шаблон /page (и содержащий маршруты) и устанавливать каждый виджет как представление внутри этого абстрактного? или это будет работать без реферата. следует ли использовать именованные или вложенные (где-то видел, что именованные представления считаются запахом кода, не знаю почему). Каковы рекомендации по выбору между вариантами и каковы наилучшие методы настройки? Буду рад любым советам по этому поводу.

Спасибо!


person alonisser    schedule 18.11.2013    source источник
comment
Подробное руководство вики ui-router содержит полезную информацию по этому поводу: github.com/angular-ui/ui-router/wiki/   -  person eflat    schedule 18.04.2015


Ответы (2)


Абстрактные состояния полезны, если вы хотите «подставить» URL/состояние к некоторым дочерним состояниям, я не думаю, что это лучший выбор для вас. Используйте состояния, разделенные точками, такие как page и page.subpage . Я думаю, будет работать для вас. Хорошей практикой является установка контроллеров, шаблонов и разрешения внутри состояний в конфигурации модуля, таким образом, вы можете использовать состояние как единый фрагмент кода, который связывает вашу модель с представлением. Ознакомьтесь с документацией по ui-router в вики для лучшего понимания.

person LookForAngular    schedule 02.07.2014

Если вы хотите иметь общее родительское представление (например, представление с панелью администратора), вы можете использовать абстрактные состояния. Этот

Если вам нужно сгруппировать маршруты с общим представлением, вы должны использовать абстрактное состояние. Например, если вы хотите создать маршрут /admin, где все представления имеют одну и ту же панель навигации, вы можете создать абстрактное состояние admin, потому что вы хотите, чтобы их дочерние элементы делились своими navbar, но вы не хотите, чтобы единственный маршрут /admin был доступен пользователю. Однако, если вы хотите, чтобы маршрут /admin был доступен, вам не нужно устанавливать состояние как абстрактное (в этом случае директива ui-view внутри родительское состояние ничего не покажет).

Небольшое резюме из документов< /а>. Абстрактное состояние может быть полезно для:

  • Добавляйте URL-адрес ко всем URL-адресам дочернего состояния.
  • Вставьте шаблон с его собственными представлениями пользовательского интерфейса, которые будут заполняться его дочерними состояниями.
  • Наследовать объекты $scope до потомков.
person Giovanni Benussi    schedule 02.05.2016