Такого нет в ангуляре, мне кажется это там и не нужно.
Не вижу ничего зазорного, если у Вас много коллекций и манипуляций с ними, подключить какой-нибудь lodash, который решит нужные задачи.
Использовали Jasmine + Karma, тестировали сервисы и контроллеры. Помогало сильно, поскольку тесты запускались в CI билде и помогали отсекать много ошибок и опечаток.
Инфы маловато про тестирование (больше "hello world" я ничего толкового не смог найти), поэтому решал проблемы по мерее их поступления через гугл.
Потому что фреймворк пытается решить очень большой и сложный пласт задач, поэтому он не всегда подходит для проекта, ввиду запутанной (на первый взгляд) архитекутры и подходов. Многие этого пугаются и ищут более простые варианты.
Из зарубежного могу сказать, что iTunesConnect использует ангуляр.
Про backbone согласен с Алексей Уколов - если Вам нужно только манипулировать данными, это лучший кандидат ИМХО.
Мне кажется AngularJS Вам стоит применить только если появится бизнес-логика, завязанная на визуальное представление целиком и полностью (читай походы к серверу, роутинг страниц, кастомные виджеты заточенные под бизнес-логику и пр.).
Мне кажется у Вас немного некорректный взгляд на тестирование. Ваши опции "либо подгружать, либо подменять" и есть ответ на Ваш вопрос.
Если в Вашем тесте сервис это вспомогательный объект и он уже покрыт тестами, то используются mock-объекты (подмена). В другом случае, если сервис это ключевая точка модуля, то его необходимо загружать "как есть" и проверять его методы в том числе.
Вы правы, пользовательские директивы должны быть обернуты в директивы ангуляра. Если изменить их не получится, могу предложить использовать сервис $compile (https://docs.angularjs.org/api/ng/service/$compile) для обертки.
Но если предполагается, что модели внутри виджета будут взаимодействовать с Angular-приложением, то без правки кода не получится.
Использует.
Связка SVN + Jira + Bamboo, хостимся у себя же в компании. Планировали переезд на Stash, но Starter License не позволяет использовать полноценный Git Workflow, к сожалению.
$on
...
Returns
function()
Returns a deregistration function for this listener.
Но я бы вам советовал пореже использовать $rootScope, со временем он может превратиться в антипаттерн "глобальная переменнная". Лучше использовать сервисы как общие компоненты для нескольких модулей.
C Ionic не работал, но почему имеется ожидание, что контроллер будет срабатывать несколько раз? Вы гуляли по приложению, а потом возвращались на эту страницу?