@ATNC
Full-stack web\python developer

Почему в модуле run нельзя определить $scope?

Доброго времени суток, господа. Нужно в модуле run сделать запрос и сохранить ответ в $scope или $rootScope. Когда пытаюсь подключить $scope в функции, получаю "Error: $injector:unpr
Unknown Provider"
app.run(function ($http, $scope) {
        
       $http.get('/ru/user_data/').success(function (data) {
        
        $scope.user_data = data.info
        })
    });

Как в run сохранить информацию в $scope?
Или, возможно, Вы знаете как можно делать запрос на каждой странице и чтобы ответ был доступен во всех контроллерах?
Заранее спасибо
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
@couchemar
Я, пожалуй, отвечу на заданый вопрос.
Потому что run не выполняется в контексте какого-либо контроллера и $scope там никакого быть не может.
Так что согласен с советами про использования фабрики.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Используйте Factory для хранения данных.
Ответ написан
@Div100
Вот парочку вариантов:
1)
AppRun.$inject = ['$rootScope', '$http'];
function AppRun($rootScope, $http) {
    $http.get('user_data/').success(function(data) {
        $rootScope.$broadcast('userDataUpdated', data); //здесь уже в любом месте приложения получаете пришедшие  данные  
    })
}

или
AppRun.$inject = ['UserService'];
function AppRun(UserService) {
    UserService.loadUserData(); //В другом месте просто получаете из этого же сервиса данные, само собой там всякие проверки сделайте
})


Либо можно скрестить все это дело и использовать вместе
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы