2014-09-24 69 views
2

我想在我的角度应用程序中缩小我的js文件。我知道有一些关于依赖注入和缩小的pbs,但我觉得我遵循了我在互联网上找到的最佳实践。AngularJS - 缩小错误

这里是我的代码的结构:

我的供应商:

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]) 

它正常工作时unminified。但使用丑化任务从咕噜后,我得到打印到控制台以下错误:

Error: [$injector:unpr] http://errors.angularjs.org/1.3.0-rc.2/$injector/unpr?p0=aProvider%20%3C-%20a%20%3C-%20MyProvider 

我在做什么错?

+0

http://stackoverflow.com/questions/23130500/angularjs-error-unknown-provider-aprovider-a?rq=1 – 2014-09-24 19:25:42

+2

提供商代码将是 .provider( 'MYPROVIDER',['$ Q ','$ http',myPvdr]) – 2014-09-24 19:30:25

回答

3

你最好不要让你的代码minfication安全:

有两种选择,$注射或内嵌添加它,当你在声明功能,并使用带引号的PARAMS阵列(引号中的东西不精缩)

https://docs.angularjs.org/tutorial/step_05

创建在其上保持一个字符串数组控制器功能的$注入性。数组中的每个字符串都是为相应参数注入的服务的名称。在我们的示例中,我们将编写:

function PhoneListCtrl($scope, $http) {...} 
PhoneListCtrl.$inject = ['$scope', '$http']; 
phonecatApp.controller('PhoneListCtrl', PhoneListCtrl); 

使用内联注释,而不是仅提供函数,而是提供数组。该数组包含服务名称的列表,后面跟着函数本身。

function PhoneListCtrl($scope, $http) {...} 
phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', PhoneListCtrl]); 
+0

我已经尝试了这两种方法与最新的角度和缩小看起来正确,但我仍然得到错误 – 2017-05-25 08:32:18

+0

@ JJ_Coder4Hire我会问一个新的quesiton并指出哪个版本的角你正在使用(原始,2等)。这是一个非常古老的解决方案,适用于角度1 – John 2017-05-25 15:28:42

1

如果您已经在使用grunt,请考虑使用grunt-ng-annotate task。 ng-annotate是一个在需要的地方自动插入适当的缩小准备语法的工具。