2016-06-01 6 views
3

Ich habe zwei Module in meiner angular.js App. In module1 (zB Name) Ich habe einen Wert definiert wieWie bekomme ich angular.js Modul Wert von einem anderen Modul

angular.module('module1') 
    .value('ID', '') 
    .service('someService', function(ID) { 
     this.getId = function() { 
      return ID; 
     } 
     this.setId = function(id) { 
      ID = id; 
     } 
    }) 

I module1 die ID-Wert in module2 zugreifen möchte. kann ich module1 von module2 zugreifen `

angular.module('module1') 

Login-Konsole wird

Object {_invokeQueue: Array[39], _configBlocks: Array[1], _runBlocks: Array[1], requires: Array[8], name: "module1"} 

be` wenn ich versuche,

angular.module('module1').service("someService"); 

oder

mit ID-Wert oder SOME zugreifen
angular.module('module1').value("ID"); 

Ich erhalte seltsames Objekt sieht aus wie

Object {_invokeQueue: Array[40], _configBlocks: Array[1], _runBlocks: Array[1], requires: Array[8], name: "module1"} 

Auch kann ich nicht module1 im module2 bei der Initialisierung enthalten, mit diesem Stil

angular.module('module2', ['module1']); 

, weil ich schon module2 in module1 enthalten habe

angular.module('module1', ['module2']); 
+0

Besteht in beiden Modulen der gleiche ID-Wert? –

+0

@MathewBerg Es existiert nur in module1 – styopdev

+0

Dann sollten Sie in der Lage sein, es in beide zu DI, wenn Sie module2 in module1 enthalten haben. –

Antwort

1

Sie müssen es immer noch als Abhängigkeit injizieren, wie Sie es mit einer Steuerung oder einem Service usw. tun würden.

Wenn Sie wollte es in einem Controller für den Zugriff auf Sie Code ähnlich wie diese

angular.module('module2').controller('MyExistingCtrl', ['ID', function(ID){ 
    console.log(ID); 
}]); 

Oder folgende John Papas Styleguide haben könnte:

angular.module('module2').controller('MyExistingCtrl', MyExistingController) 

MyExistingController.$inject = ['ID']; 

function MyExistingController(ID){ 
    console.log(ID); 
} 

Lesen Sie mehr auf dependency injection.

Auch ist es auf der angular documentation für Anbieter erklärt. Scrollen Sie den Abschnitt "Wert Rezept" nach unten.

+0

Hallo Matt, danke für die Antwort. Wie ich verstanden habe, wird Ihr Code einen neuen Controller innerhalb von Modul1 erstellen, falls ich auf den 'ID'-Wert in dem vorhandenen Controller von module2 zugreifen muss. – styopdev

+0

@styopdev Nun, das war nur Beispielsyntax. Tauschen Sie einfach den Namen des Moduls und Controllers Ihren Bedürfnissen aus. Sie injizieren nur, genauso wie Sie noch etwas injizieren. Ich werde bearbeiten. –

+0

Es funktioniert, danke für Hilfe! Ich kann mir nicht vorstellen, dass diese Lösung so offensichtlich ist und es möglich ist, den Wert eines anderen Moduls in den Controller zu injizieren. – styopdev