gpt4 book ai didi

javascript - Angularjs 缩小使用 grunt uglify 导致 js 错误

转载 作者:可可西里 更新时间:2023-11-01 01:35:36 25 4
gpt4 key购买 nike

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

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

所以当它被缩小时,它就变成了,

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

现在 a,b,c,d 不会被 Angular 分别解释为 $scope, $rootScope, $location, $http 并且整个代码无法工作。为此angularjs提供了一种解决方案,就是

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

我们可以使用上面的语法注入(inject)不同的依赖。在我没有使用一些自定义 Angular 服务作为依赖项之前,这一直很有效。因此,例如,

如果我有类似的东西

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 正确解释。

由于我们必须开始项目开发事件,所以我们无法花足够的时间来研究问题,因此我们开始使用 Controller 而没有缩小它们。所以第一个问题是 Angular 是否存在这样的问题,或者我犯了一些错误并且由于它不起作用?如果存在这样的问题,如何解决?

最佳答案

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

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

变成:

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

关于javascript - Angularjs 缩小使用 grunt uglify 导致 js 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22866183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com