Skip to content

Instantly share code, notes, and snippets.

@ElectricMaxxx
Last active August 29, 2015 14:26
Show Gist options
  • Save ElectricMaxxx/c3f096e8a455b00332cc to your computer and use it in GitHub Desktop.
Save ElectricMaxxx/c3f096e8a455b00332cc to your computer and use it in GitHub Desktop.
Eigentlich möchte ich gerne einen Provider als eine art Chain implementieren, der im `.config()` block über einen Adder
Services eingehängt bekommt. Wenn ich aber folgendes probiere:
``` javascript
angular.module('myModul', []).config(function(myCoolProvider, myService) {
myCoolProvider.add(myService);
});
``
Der Provider chaint durch die einzelnen Services und tut damit was. Das ist für mich eine Art meine lib offen für
cusotmizing zu halte, dann ein Nutzer, dann selbständig Services einhängen kann.
Ja leider scheint das nicht zu gehen, da zur der Zeit der Service `myService` noch garnicht zur
Verfügung steht.
Meine Zweite Idee war: Dann halt durch `$injector.get('myService');` im adder des Providers - mist, der
Service ist noch immer nicht erreichbar. Dann halt vor dem Result in `$get()`, also das was den Provider
eigentlich ausmacht:
``` javascript
angular.module('myModule').provider('myCoolProvider', function ($injector) {
this.list = [];
this.add = function (providerId) {
this.list.push(providerId);
}
this.$get = function () {
_.each(this.list, function (id) {
this.serviceList.push($injector.get(id));
}
return {
// do the work
}
}
});
```
Aber scheinbar ist auch hier der Service noch nicht erreichbar, wenn der Provider dann schlussendlich inztanziert
wird. Komischerweise existiert von meinem Service ein Provider (myServiceProvider, nach debugging gefunden)
aber noch nicht der Service selbst, sodass ich ihn bekommen könnte.
Was mache ich falsch, was geht besser? Wann sind die Services da?
btw: injection mache ich normal auch anders is hier nur kürzer.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment