Какие есть best practices для работы с angular-ui-router?

Разбираюсь с angular'ом, и как мне кажется - работать с родным ngRoute не так весело, как со сторонним angulalr-ui-router. Концепция состояний намного интереснее, чем URL'ки.

Попутно возникает целая куча вопросов:
1) режим html5Mode - использовать или нет?
2) кнопки "Вперёд" и "Назад" по истории браузера иногда не работают, и не совсем понятно - что именно я ломаю в коде
3) Как попасть сразу в какое-то конкретное состояние, написав его в адресной строке браузера? В режиме html5Mode я привязываю состояние к URL'кам, но когда прохожу по этому пути - получаю 404. Что в принципе логично, сервер-то не знает какие там пути у состояний.
4) как теперь идеологически правильно выдавать кастомную страничку 404? брать её клиентом, если адреса нет в состояниях или отдавать сервером?
5) это нормально, если мне не хочется присваивать некоторым состояним свои URL'ки? Или у пациента не всё впорядке с головой?
6) если я захочу протестить свой клиент, то как мне ходить по состояниям programmaticly, если у состояний не будет путей?

накиньте советов или ссылок, по докам не всё понятно, спасибо.
  • Вопрос задан
  • 2837 просмотров
Пригласить эксперта
Ответы на вопрос 1
miraage
@miraage
Старый прогер
1) Зависит от случая. Если использовать - надо роутить маршруты на входной контроллер. Мне проще через хэшбэнг.

2) Никогда не встречал. Если приложение загрузилось без ошибок, все темплейты/контроллеры на месте - должно быть хорошо

3)
$stateProvider.state({name: 'foo', url: '/foo', template: 'foo'});

localhost/#/foo
<!-- ссылка в разметке -->
<a data-ui-sref="foo">foo</a>

// Переход из контроллеров/сервисов итд
$state.go('foo')


4) Очень тяжелый вопрос. Ловите событие через $rootScope.$on('$stateChangeError', function() { $state.go('404'); });

5) Нет. У каждого состояния обязательно должны быть параметры name и url.

6) protractor
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы