javascript - AngularJS beroendeinjektion


Jag har sagt två moduler:

  1. foo.a
  2. foo.b

och en applikationsmodul:

  angular.module("foo", ["foo.a","foo.b"])

Jag har en tjänst i modul foo.b säg:

  angular.module("foo.b", [])

  angular.module("foo.b").factory("helper",helperFn);

som jag vill använda i en av mina kontroller i foo.a.

Det jag har gjort är enkel beroendeinjektion:

 angular.module("foo.a", []);

 angular.module("foo.a")
        .controller("MyController",["helper",MyControllerFn]);

vilket fungerar.

Mina frågor är

  1. Hur får jag tjänsten "helper" från modulen foo.b även om den inte är deklarerad som ett beroende för modul a?
  2. Kommer det att gå sönder vid ett senare tillfälle?
  3. Om det är korrekt, är detta en bra praxis?

Svar #1

Lägg fabriken som du behöver åtkomst till i båda modulerna i en tredje modul. Låt dina två ursprungliga moduler injicera ett beroende till den tredje modulen.

angular.module("foo", ["foo.a", "foo.b"]);

angular.module("foo.a", ["foo.c"])
  .controller("MyController", ["helper", MyControllerFn]);

angular.module("foo.b", ["foo.c"]);

angular.module("foo.c")
  .factory("helper", helperFn);