AngularJS 中的依赖注入(inject)是如何工作的?
是的,我读了很多东西,我知道如何使用它。
假设我们有以下 Controller :
app.controller('LoginCtrl', ['$scope', '$rootScope', '$http', '$location', function($scope, $rootScope, $http, $location) { /* ... */ }]);
我知道我们应该传递一个数组才能使用 JS 压缩器,这样 Angular 无论如何都会知道依赖项的真实名称。
假设我们实际使用 JS 压缩器并且 $scope
被翻译成 $s
。 Angular 如何知道这个 $s
实际上是一个 $scope
因此它应该具有与 $scope
文档中描述的相同的接口(interface)?
最佳答案
缩小过程使函数的所有名称和参数更短,以减少文件的重量。因此,一旦您的 Controller 被缩小,他将看起来像这样:
函数(a, b, c, d) {/* ... */}]);
但是,如果您正在使用 $inject
,或者将注入(inject)数组传递给函数,它会让您的函数知道应该将哪个确切的服务注入(inject)到您的 Controller 的每个参数中。
app.controller('LoginCtrl', [
'$scope', '$rootScope', '$http', '$location',
function(a, b, c, d) { /* ... */ }]);
因此,一旦它被缩小, Angular 仍将是应该注入(inject)的服务名称和位置编号(数组中元素的索引),它们中的每一个都链接到 Controller 函数中的参数索引。因此,正如我们所见,顺序很重要。
关于javascript - AngularJS 如何与 JS minifiers 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39543585/