gpt4 book ai didi

angularjs - 保持 $inject 同步是什么意思?

转载 作者:行者123 更新时间:2023-12-02 01:34:17 25 4
gpt4 key购买 nike

我正在阅读 the Angular docs about injecting dependencies ,并试图弄清楚“同步”是什么意思。

例如,保持事物“同步”与保持事物“按相同顺序”之间有什么区别?文档似乎暗示它们之间存在一些差异。

上下文:

关于内联数组表示法

使用这种类型的注解时,注意保持注解数组与函数声明中的参数同步。

关于$inject属性注解,

在这种情况下,$inject 数组中值的顺序必须与 MyController 中参数的顺序相匹配。

就像数组注解一样,您需要注意保持 $inject 与函数声明中的参数同步。

最佳答案

在这种情况下,“同步”和“按顺序”意思相同。

除了隐式注释之外,顺序在所有情况下都很重要(但是,隐式定义的函数会在缩小/丑化期间中断)

从这里可以看出:

app = angular.module('myApp', []);
// Inline Array Notation where we are defining the dependencies in the opposite order of what the function is defined as
app.controller('myInlineCtrl', ['$http', '$scope', function ($scope, $http) {
$scope.testVal = '$scope passed as $scope';
$http.testVal = '$http passed as $scope';
// results in `$http passed as $scope`
}]);

// $inject Property Annotation
var myInjectorCtrl = function ($scope, $http) {
$scope.testVal = '$scope passed as $scope';
$http.testVal = '$http passed as $scope';
// results in `$http passed as $scope`
}
// Inject the dependencies in the opposite order
myInjectorCtrl.$inject = ['$http', '$scope'];
app.controller('MyInjectorCtrl', myInjectorCtrl);

上面的测试表明我们受注入(inject)顺序的约束,而不是函数定义中参数的顺序。这与能够使用您希望的任何参数名称(在合理范围内)定义一个函数是一致的,这样当涉及到应用程序的 minification 时,该函数本身可以被压缩但仍然被调用正确的论点。

一个例子是这样的:

// Define a controller with your own argument names
app.controller('myMickeyMouseCtrl', ['$http', '$scope', '$timeout', function (mickey, donald, daffy) {
mickey.testVal = 'mickey passed as $scope';
donald.testVal = 'donald passed as $scope';
daffy.testVal = 'daffy passed as $scope';
// results in `donald passed as $scope`
}]);

所有三个的演示 http://jsfiddle.net/6qh2oyu6/

同样重要的是要注意,如果您定义 myInjectorCtrl.$inject = ['$timeout']; 随后已经定义它,您将清除为该 Controller 函数存储的注入(inject),在这种情况下这将导致仅注入(inject) Angular $timeout 函数。

关于angularjs - 保持 $inject 同步是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32121323/

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