通过AngularJs中的工厂注入依赖项

时间:2015-05-22 21:34:35

标签: javascript angularjs

我有以下服务代码

(function () {
    'use strict';

    angular.module('App')
           .factory('apiservice', apiservice);

    /* @ngInject */
    function apiservice($http) {
        var service = {
            getData: getGridData,
        };

        return service;

       //code ommitted for clarity
    }
})();

当我缩小和捆绑时,依赖性变得越来越糟。所以我想将 $ scope 更改为'$ scope',这样minifier就不会搞砸名字。

我知道有几种方法可以做到这一点。但是我可以让它像下面这样工作:

(function () {
    'use strict';

    angular.module('App')
           .factory('apiservice', ['http', apiservice]);

    function apiservice($http) {
        return service;
    }
})();

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你有几个选择。第一种是使用扩展语法进行依赖注入。在这种情况下:

.factory('apiservice', ['$http', apiservice]);

function apiservice($http) {
  return service;
}

这也可以写成:

.factory('apiservice', apiservice);

apiservice.$inject = ['$http'];

function apiservice($http) {
  return service;
}

或者在缩小之前添加另一个构建步骤,例如ng-annotate将您的语法转换为扩展版本。

像这样的工厂

.factory('apiservice', function($http) {
  return service;
});

会变成:

.factory('apiservice', ['$http', function($http) {
  return service;
});

哪种方法可以安全缩小。