AngularJs:为服务使用别名

时间:2015-11-22 23:38:03

标签: angularjs angular-services

我正在使用reusable library创建angular。该库基本上与使用此库的用户提供的service相关联,并根据它进行一些工作。

例如:我们的库中定义了一个名为Login的服务,其中传递了User服务,我们检查用户是否已登录。

.factory('Login', ['User',
    function(User) {
        return {
            checkLogin: function() {
                //PAGE NOT FOUND ERROR..
                if (User.authenticated) {
                    return true;
                }
                else{
                    return false;
                }
            }
        }; //Return
    }
])

我传递的User服务名称未修复可能有不同的名称,如EmployeeCustomer,它取决于用户,因为此服务由下载的用户定义这个库,但无论服务名称如何,它都具有相同的功能。

因此,我需要一些方法将我给定的正式服务名称参数映射到用户提供的实际服务名称参数。

例如:有些用户下载了这个库,他已经使用User的名称定义了Employee服务,然后给出了我的正式服务名称参数User通过某些地图功能映射到提供的实际服务名称。

function map(){
   // maps Employee service ==> User service
   /*
      I want this  map  function  to be something this we use in case of a variable like.
      var x = function(){return 1;}
      var y;
      y = x;
      Now y contains the instance of x
      Is something like this possible in case of services? Since services are passed as dependency injection at runtime.

} 

1 个答案:

答案 0 :(得分:3)

似乎所有你需要的是动态注入,这是可能的:

    app.factory('Login', ['$injector', function($injector) {
        var service;
        function initService(name) {
            service = $injector.get(name);
        }
    ...

然后你照常使用它。