使用$ inject的angularjs服务?

时间:2016-08-29 03:43:37

标签: javascript angularjs

(function() {
    angular.module('MyApp')
        .factory('Contact', Contact);

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

    function Contact($http) {
        return {
            send: function(data) {
                return $http.post('/contact', data);
            }
        };
    }
})();

在样板中我找到了上面的代码。我很少有困惑:

  1. 为什么不直接注入$http

      

    angular.module('MyApp').factory('Contact', function($http){ });

  2. 是否有必要将服务置于自执行功能中?

1 个答案:

答案 0 :(得分:3)

首先 - 当您尝试最小化角度文件时,会出现问题。您的最小化器可能会将$ http转换为变量b,如果您使用$inject,它们的身份仍将保留在字符串中,否则您将出错。

第二 - 当您使用自执行功能时,您正在隔离服务范围。当您将所有文件合并为一个文件时,这将有所帮助。如果您不这样做,那么具有相同名称的变量或函数将产生错误。

John Papa's styleguide

详细说明了这一点

希望有所帮助