Dor Cohen Dor Cohen - 3 months ago 15
AngularJS Question

Call angularjs service from simple js code

I have the following angularjs service:

angular.module('app.main').factory('MyService', ["$http", function ($http) {
return new function () {

this.GetName = function () {
return "MyName";
};
};
}]);


How can I call
GetName
function from
MyService
from legacy js code?

Answer

Use angular.injector. Using your code you can do something like the following:

angular.module('main.app', []).factory('MyService', ['$http', function ($http) {
    return new function () {

        this.GetName = function () {
            return "MyName";
        };
    };
}]);


angular.injector(['ng', 'main.app']).get("MyService").GetName();

Here is the jsfiddle: http://jsfiddle.net/wGeNG/

NOTE - You need to add "ng" as your first module before loading your custom module since your example code depends upon $http provider which is in the ng module.

EDIT - Using get() as in OP's answer but note this code is fetching the service without relying upon the element being bound to the app module "main.app".

Comments