我试图在我的角度应用程序中缩小我的js文件。我知道在依赖注入和最小化方面有一些问题,但是我觉得我遵循了我在互联网上找到的最佳实践。
这是我的代码的结构:
我的提供者:
function myPvdr() {
this.getUrl = function() {
return 'http://some/api/call';
};
this.$get = function($q, $http) {
var self = this;
return {
getData: function(points) {
var d = $q.defer();
$http({
method: 'GET',
url: self.getUrl(),
cache: true
}).success(function(data) {
d.resolve(data);
}).error(function(err) {
d.reject(err);
});
return d.promise;
}
}
}
}
我的控制器:
function myCtrl($scope, MyProvider, localStorageService) {
// some code
}
我的模块:
angular.module('myApp', ['LocalStorageModule', 'ngAnimate'])
.provider('MyProvider', myPvdr)
// Loading controllers into the module
.controller('myCtrl', ['$scope', 'MyProvider', 'localStorageService', myCtrl])
未缩小时效果很好。但是在使用grunt的uglify任务后,我将以下错误打印到控制台:
Error: [$injector:unpr] http://errors.angularjs.org/1.3.0-rc.2/$injector/unpr?p0=aProvider%20%3C-%20a%20%3C-%20MyProvider
我究竟做错了什么?
最佳答案
您不会使代码的加密变得安全:
有两种选择,$ inject或在声明函数时内联添加它,以及使用带引号的参数组成的数组(引号中的内容不会最小化)
https://docs.angularjs.org/tutorial/step_05
在包含字符串数组的控制器函数上创建一个$ inject属性。数组中的每个字符串都是要为相应参数注入的服务的名称。在我们的示例中,我们将编写:
function PhoneListCtrl($scope, $http) {...}
PhoneListCtrl.$inject = ['$scope', '$http'];
phonecatApp.controller('PhoneListCtrl', PhoneListCtrl);
使用内联注释,您可以在其中提供一个数组,而不仅仅是提供函数。该数组包含服务名称列表,其后是函数本身。
function PhoneListCtrl($scope, $http) {...}
phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', PhoneListCtrl]);
关于javascript - AngularJS-缩小错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26024850/