"Пользователь должен иметь возможность в любой момент переключаться между вкладками и возвращаться обратно".
Про обновление страницы, выключение компа, сохранение состояния между сессиями, синхронизации между браузерами, мобильными устройствами, итп - речи не идёт.
Пользователь может отвлечься от редактирования текста или проматывания списка в другую вкладку, а потом вернуться в тоже место.
Ваш ui-route подход - сохранять состояние и восстанавливать его. Это как минимум два действия.
Мой bootstrap подход - не херить состояние вообще. Это ноль действий.
Ну как бы мой вопрос подразумевал - как сделать такие вкладки по-ангуляровски.
Сохранять все телодвижения/инпуты в локалсторадж/глобальную переменную/на сервер я могу и из голого жаваскрипта почти с теми же затратами.
Смысл модели/биндинга/скоупа/контроллера/стэйта мне видится в том, что всё уже сохранено, и дополнительных телодвижений совершать не надо.
А если этими способами задача не решается, значит я прав в отношении применимости для неё ng-route/ui-route.
Подход с "традициронными" (скрываемыми) вкладками эту задачу (сохранение состояния) решает на ура за 0 дополнительных телодвижений + экономит время на перерисовку.
Остаются только вопросы из Upd.
Состояние вкладки включает данные в инпутах, отрендерёные датасеты с сервера, параметры страничности в таблицах, позицию скролла, выделенные элементы, кусок карты с отметками, открытый редактор с недописанным постом, и тому подобное.
Всё это хранится в состояниях контроллеров или в scope.
Как и где это засовывать в stateParams?
И не будет ли оверхедом перерисовывать кучу данных, если можно всё оставить как есть?
поиск лучше делать по началу любого из слов.
потмучто порядок слов в названиях нифига не очевиден:
"восточная промзона" vs "промзона восточная"
"3я советская" vs "советская 3я"
а в подсказках, само собой, надо выводить полное название вместе со всеми скобками.
RE.sub(подстанова, строка) - это замена выражения на подстанову
RE.split(строка) - разбиение строки в список считая выражение разелителями
filter(функция проверки, список) - просто фильтрация списка
list(хрень) - просто конвертирование итерируемой хрени в список
Насколько я понял, переключение вкладок через ui-router полностью перегенерит всё содержимое ui-view. Тоесть старый DOM херится и вставляется новый. И если там какие-нить инпуты - то их не восстановить.
Мне кажется, вы разговариваете либо не со мной, либо о чём-то своём.
Мой вопрос был - в каких ситуациях при разработке на ангуларе приходится использовать jquery вместо родных средств ангулара?
При этом jqLite я считаю разновидностью jquery а не родным средством.
Вставка текста в ноды делается через {{scope_ref}}
Получение текста из инпута - через ng-model="scope_ref"
Навешивание стандартных событий - через ng-foo="handler()"
Кастомные события - через scope.$on|$emit|$broadcast
Мне, как программисту, не пофиг, как писать директиву - с использованием возможностей ангулара или jquery.
Ванильным js или чистым api браузера я ни разу не интересовался.
А одной из фишек ангулара мне кажется то, что мне не нужно использовать jquery.
Можете привести примеры, где приходится использовать jquery потомучто иначе никак?
А если во вкладках будет куча других контроллеров, тогда как?