Кажется, вы хотите объявить переменную в своем контроллере, чтобы ваша служба могла записывать данные в эту переменную. Вы должны думать об этом наоборот, проходя службу к контроллеру через инъекции зависимостей
app.controller('homeCtrl', function($scope, myServiceIsNowInjected){
})
, а затем вызов метода на этой службе в контроллере:
myServiceIsNowInjected.getDataFromServer('my param');
Вы тогда встреча проблема в том, что получение данных с сервера является асинхронным, поэтому вам нужно использовать угловые обещания, чтобы вы могли присвоить результат переменной в своей области при получении данных. Выше, еще в контроллере будет:
myServiceIsNowInjected.getDataFromServer('my param').then(function(data){
$scope.viewvar = data;
}, function(err){ console.log(err) });
Таким образом, вместо того, проходя глобальную переменную в службу для обслуживания, чтобы записать данные в этой переменной, а вы попросите службу для выполнения какой-либо задачи , и контроллер должен записать результат этой задачи в область $ scope, сделав ее доступной для представления.
Полный пример такого использования можно получить, как указано here.
$rootScope
должен не использоваться для такого рода вещи - это вызовет у вас проблемы, как растет ваше приложение, в то время как с использованием модульных контроллеров, которые тянут информацию от услуг не будут.
Без кода и четкого описания проблемы ответить невозможно. Но вы все равно не должны этого делать. глобалы - зло. Используйте то, что Angular предоставляет для обмена информацией между компонентами: услуги. –
Я знаю, что глобалы - это зло. Я стараюсь избегать их любой ценой. Но то, что я пытаюсь сделать, это вызвать функцию с сервера и на основе информации, которую я получаю, я хочу показать или скрыть какой-то ионный элемент. Я использую ng-show, чтобы заставить его работать из файла Controller.js, но я хотел бы вызвать функцию из services.js. Каков наилучший способ добиться этого с помощью глобальных глобалов –
Из урока angularJS https://docs.angularjs.org/tutorial/step_05 –