Построения углового приложения, я поклонник использования нг-контроллер и пользовательские директив структурировать приложение, например:AngularJS - Управление изменение URL на несколько контроллерах/элементов пользовательского интерфейса
<nav ng-controller="NavController"></nav>
<date-picker></date-picker>
Я люблю эти шаблоны потому что они декларативны и очень легко следовать - вы точно знаете, где искать логику поддержки.
С другой стороны, использование ng-view или даже плагин ui-router (на мой взгляд) абстрагирует некоторые функции и затрудняет их чтение.
Однако, мой предпочтительный шаблон дает мне проблему, когда дело доходит до изменения URL-адресов в приложении по логике. Я хотел бы, чтобы каждая часть пользовательского интерфейса отвечала соответствующим образом на изменения URL-адреса, но я не знаю, куда поместить код. Я предположил, у меня есть два варианта:
- Ответить на $ место индивидуально изменений в каждом контроллере или директивы
- инкапсулировать это в каком-то другом классе или услугу, которая поддерживает ответственность за прослушивание изменение URL
Я не могу понять, как это сделать.
Первый вариант дает мне полный контроль, но я не могу воспользоваться параметрами синтаксического анализа ng-route и т. Д. Мне действительно нужно будет сворачивать самостоятельно, когда дело доходит до проверки изменений URL.
С опцией два я не могу ссылаться ни на один из моих контроллеров, потому что они уже объявлены!
В более широком смысле, я обеспокоен тем, что не найти решение этого сразу, что я должен думать о вещах неправильно. Это в корне неверно?
EDIT: Во избежание недоразумений, я очень идет о SPA, а более конкретно, это такое дело, что я пытаюсь сделать:
<nav ng-controller="NavController"><!-- more HTML here --></nav>
<div ng-controller="VideoController"><!-- more HTML here --></div>
<div ng-controller="CommentController" ng-show="Active"><!-- more HTML here --></div>
Теперь предположим, что я навигации to: "/ video /: key /" - Я хочу, чтобы VideoController забирал видео-ключ и выполнял то, что ему нужно для загрузки видео. Я хочу, чтобы NavController выделил, какой пункт меню активен, и т. Д.
Если я перехожу к «/ video /: videokey/comment» - я хочу, чтобы VideoController загрузил видео, а NavController выделит, что является активным, AND CommentController для загрузки комментариев/появления в видео и т. Д.
Это та идея, с которой у меня нет головы - ответ на изменение URL-адресов в двух контроллерах, каждый из которых отвечает за отдельную часть пользовательского интерфейса в одном Применение страницы.
Разве вы не видели причину, по которой OP не хочет этого? – Shomz