Ответ 1
Используйте службу для хранения данных. Внесите эту услугу в каждый контроллер, которому необходим доступ к этим данным. Каждый раз, когда контроллер создается и выполняется (поскольку вы переключаетесь на другой вид/маршрут), он может запросить службу для данных. Если служба еще не имеет данных, она может отправить запрос на сервер и вернуть обещание контроллеру (см. Ниже, как это сделать). Если служба имеет данные, она может немедленно вернуть ее на контроллер.
См. также Обработка ответа $http в службе
Обратите внимание, что сервисы - это синглтоны, в отличие от контроллеров.
Другой вариант: при создании службы он может получить выборку самих данных, а затем сохранить их для последующего использования. Контроллеры могут не видеть $функций или функций в сервисе. Пример такого подхода см. В Как сохранить текущий контекст пользователя в Angular?