Почему дают "аннотация: настоящий" государственный URL-адрес?
Я сегодня возился с ui-маршрутизатором, пытаясь лучше понять леса в Ionic, и одна вещь, которую я заметил, заключалась в том, что они дают абстрактное состояние "вкладок" url.
единственный раз, когда я когда-либо использовал абстрактные состояния, я использовал пустую строку в качестве url-адреса, и я замечаю, что если я когда-либо случайно пытался перейти в абстрактное состояние (в отличие от дочернего состояния), я получаю ошибку:
не удается перейти к абстрактное состояние ' [insertAbstractStateHere]'
edit:
3 ответа:
причина, по которой вы будете использовать абстрактное состояние, - это сохранить ваше определение сухой когда у вас есть часть вашего url-адреса, недоступная для навигации. Например, предположим, что у вас была схема url-адреса, подобная следующей:
/home/index /home/contact
однако, по какой-то причине в вашем дизайне этот url был недействительным (т. е. нет цели для страницы):
/home
теперь вы можете просто создать два состояния для этой ситуации, с полными URL-адресами, однако тогда вы будете писать
/home/
в два раза, и описание немного более запутанное. Лучше всего вместо этого создать домашний абстрактный родитель, из которого два других состояния являются дочерними (для документов ui-router):$stateProvider .state('parent', { url: '/home', abstract: true, template: '<ui-view/>' }) .state('parent.index', { url: '/index', templateUrl: 'index.html' }) .state('parent.contact', { url: '/contact', templateUrl: 'contact.html' })
просто обратите внимание, что внутри родительского состояния мы назначаем шаблон, единственным дочерним элементом которого является
ui-view
. Это гарантирует, что дети отображаются (и может быть, поэтому ваш появляется пустым).
иногда вы можете заметить использование абстрактного состояния с пустым url. Наилучшим образом использовать этот настройка-это когда вам нужен родительский
resolve
. Например, для подмножества состояний могут потребоваться определенные данные сервера. Поэтому вместо того, чтобы помещать одну и ту же функцию разрешения в каждое из ваших состояний, вы можете создать пустой Родительский url-адрес с требуемым разрешением. Это также может быть полезно, если вам нужны иерархические контроллеры, где родитель не использует представление (не уверен, почему вы этого хотите, но это правдоподобно).