(function() {
angular.module('MyApp')
.factory('Contact', Contact);
Contact.$inject = ['$http'];
function Contact($http) {
return {
send: function(data) {
return $http.post('/contact', data);
}
};
}
})();
在样板中我找到了上面的代码。我很少有困惑:
为什么不直接注入$http
angular.module('MyApp').factory('Contact', function($http){ });
是否有必要将服务置于自执行功能中?
答案 0 :(得分:3)
首先 - 当您尝试最小化角度文件时,会出现问题。您的最小化器可能会将$ http转换为变量b,如果您使用$inject
,它们的身份仍将保留在字符串中,否则您将出错。
第二 - 当您使用自执行功能时,您正在隔离服务范围。当您将所有文件合并为一个文件时,这将有所帮助。如果您不这样做,那么具有相同名称的变量或函数将产生错误。
详细说明了这一点希望有所帮助