2017-03-06 5 views
1

In meinem Modul in AngularJS Service Wert konstant erhalten hinzugefügt i konstant wie unterkann nicht

var app = angular.module("myapp", ["ngRoute"]).constant("myConfig", { 
"url": "http://localhost", 
"port": "80" 
}); 

ich versuche Wert der Konstante in meinem Dienst zu bekommen, wie unten, aber ich bin nicht in der Lage, etwas zu bekommen.

app.service('MyService', function MyService($http, myConfig) { 

} 

Was ist der richtige Weg, um einen konstanten Wert im Service zu erhalten?

+1

'myConfig' ist nicht definiert oder werden Sie einige Fehler zu bekommen? Ich habe eine [jsFiddle] gemacht (https://jsfiddle.net/The_Bear/jg0maqqr/3/) und ich hatte kein Problem, die Konstante in einen Service zu injizieren ... –

+0

@ The.Bear ich nicht MyConfig in Regler. Sie geben also myConfig an den Controller und dann geht der Controller weiter. Ist das der einzige Weg oder wenn noch bessere Wege? – Happy

+0

Es gibt drei Möglichkeiten, die Konstante in einen Service zu injizieren: Inline Array Annotation, '$ inject' Property Annotation und Implizite Annotation. Was besser ist, ist eine Frage der Meinung. Siehe [AngularJS Entwicklerhandbuch - Dependency Injection Annotation] (https://docs.angularjs.org/guide/di#dependency-annotation) – georgeawg

Antwort

0

Sie können entweder Service-Funktion erstellen und den konstanten Wert über die Service-Funktion zurückgeben. Oder Sie können einfach die Konstante in den Controller injizieren und direkt den konstanten Wert aufrufen.

var app = angular.module("myapp", []); 
 

 
app.constant("myConfig", { 
 
"url": "http://localhost", 
 
"port": "80" 
 
}); 
 

 
app.service('MyService', function MyService($http, myConfig) { 
 
    var vm = this; 
 
    
 
    vm.getConst = function(){ 
 
     return myConfig.url; 
 
    } 
 
}); 
 
app.controller("ctrl",function($scope,MyService,myConfig){ 
 
    //get it throuth servive 
 
\t 
 
    console.log(MyService.getConst()); 
 
    
 
    //get it from controller 
 
    
 
    console.log(myConfig.url); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myapp" ng-controller="ctrl"> 
 

 
</div>

+0

Da die 'getConst' -Funktion ein ' return'-Anweisung, gibt die Funktion den [primitiven Wert 'undefined'] zurück (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined). – georgeawg

+0

@georgeawg was meinst du mit auslassen zurück. ich aktualisiere es und 'getConst' gebe den Wert zurück –