一尘不染

使用Grunt uglify的Angularjs缩小导致js错误

angularjs

在angularjs中,我们将参数作为依赖项注入传递。例如,

function checkInCtrl ($scope, $rootScope, $location, $http){
…..
….
}

所以当它缩小时,它变成

function checkInCtrl(a,b,c,d){
}

现在,a,b,c,d将不会被角度和整个代码分别解释为$ scope,$ rootScope,$ location和$
http无法工作。为此,angularjs提供了一种解决方案,即

checkInCtrl.$inject = ['$scope', '$rootScope', $location', '$http'];

我们可以使用上述语法注入不同的依赖项。直到我没有使用一些自定义的角度服务作为依赖项,此方法都有效。例如

如果我有类似的东西

function checkInCtrl ($scope, $rootScope, $location, $http){
…..
….
}

它适用于给定的解决方案,但是如果我有类似的东西

function checkInCtrl ($scope, $rootScope, $location, $http, customService){
…..
….
}

其中,customService类似于

angular.module(customService, ['ngResource'])
                .factory('abc', function($resource) {
                                return $resource('/abc');
                })

它的缩小版本无法正确地用angular解释。

由于我们必须开始进行项目开发活动,因此我们无法花费足够的时间来研究问题,因此开始使用控制器而没有减少它们。那么第一个问题是角度是否存在这样的问题,还是我犯了一些错误,并且由于这个原因而无法正常工作?如果存在这样的问题,该如何解决?


阅读 202

收藏
2020-07-04

共1个答案

一尘不染

您必须使用基于字符串注入的语法,以确保缩小版本指向良好的依赖关系:

function checkInCtrl ($scope, $rootScope, $location, $http){}

变成:

['$scope', '$rootScope', '$location', '$http', function checkInCtrl ($scope, $rootScope, $location, $http){}]
2020-07-04