javascript - 在 AngularJs 中通过工厂注入(inject)依赖

标签 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' 这样缩小器就不会弄乱名称。

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

(function () {
    'use strict';

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

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

感谢任何帮助。

最佳答案

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

.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;
});

缩小是安全的。

关于javascript - 在 AngularJs 中通过工厂注入(inject)依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30406217/

相关文章:

javascript - JQuery 追加行为

javascript - TinyMce 没有插入 <br/>

javascript - 如何在另一个之前添加新的 div?

javascript - AngularJS : Functions in Service doesn't work

angularjs - 如何在 Angular $cacheFactory 中定义缓存的过期时间

javascript - AngularJS:当前指令实现直接使用变量中的模板,我有机会在这里使用 templateUrl 吗?

javascript - 是否可以使用 material ui 选项卡并仍然使用 react router?

javascript - 100px 后的 jQuery 滚动功能

angularjs - 如何向 AngularJS 表单添加自定义验证?

javascript - 上传后双倍大小的文件