Es scheint, dass Sie eine Variable in Ihrem Controller deklarieren möchten, damit Ihr Dienst Daten in diese Variable schreiben kann. Sie müssen sich über es anders herum, vorbei an den Dienst zu dem Controller durch Dependency Injection
app.controller('homeCtrl', function($scope, myServiceIsNowInjected){
})
und dann Aufruf einer Methode auf diesen Dienst in der Steuerung denken:
myServiceIsNowInjected.getDataFromServer('my param');
Sie werden dann Begegnung Das Problem, dass Daten von einem Server abgerufen werden, ist asynchron. Daher müssen Sie Winkelversprechungen verwenden, damit Sie das Ergebnis einer Variablen in Ihrem Bereich zuweisen können, wenn die Daten empfangen werden. Die obige, nach wie vor in Ihrem Controller werden:
myServiceIsNowInjected.getDataFromServer('my param').then(function(data){
$scope.viewvar = data;
}, function(err){ console.log(err) });
Auf diese Weise eher als eine globale Variable für den Dienst in den Dienst Leiten der Daten auf diese Variable zu schreiben, anstatt Sie den Dienst stellen eine bestimmte Aufgabe zu erfüllen , und der Controller schreibt das Ergebnis dieser Aufgabe in den $ scope und stellt ihn der Ansicht zur Verfügung.
Eine vollständige Lösung Beispiel von genau dies ist wie erwähnt here.
$rootScope
sollte nicht für diese Art der Sache verwendet werden - es wird Ihnen Probleme verursachen wie Ihre Anwendung wächst, während modulare Steuerungen verwendet, die Informationen von Dienstleistungen ziehen nicht.
Ohne Code und eine klare Beschreibung des Problems, ist es unmöglich zu beantworten. Aber du solltest das sowieso nicht tun. Globals sind böse. Verwenden Sie, was Angular bereitstellt, um Informationen zwischen Komponenten zu teilen: Dienste. –
Ich weiß, Globals sind böse. Ich versuche, sie um jeden Preis zu vermeiden. Aber was ich versuche, ist eine Funktion vom Server zu rufen und basierend auf den Informationen, die ich zurückbekomme, möchte ich einen Ionen-Gegenstand zeigen oder verstecken. Ich benutze ng-show, um es von der Controller.js Datei arbeiten zu lassen, aber ich möchte die Funktion von services.js aufrufen. Was ist der beste Weg, dies mit out Globals zu erreichen? –
Aus dem angularJS Tutorial https://docs.angularjs.org/tutorial/step_05 –