gpt4 book ai didi

javascript - Angular 服务注入(inject)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:55 24 4
gpt4 key购买 nike

我正在处理一项琐碎的任务(我开始工作了),它向选项卡导航中的 dom 元素添加了一个 .active 类。简单的。通过关注 https://stackoverflow.com/a/12306136/2068709 使其正常工作.

阅读提供的答案并将他们的 Controller 与 angular 网站上的示例 Controller 进行比较,我发现了一些我不太理解的有趣内容。

在 AngularJS 网站上,$scope$location(以及其他服务)与一个匿名函数一起注入(inject)到 Controller 中定义 Controller 。但根据答案,服务不是注入(inject),而是通过匿名函数传递。为什么这行得通?服务不应该一直被注入(inject)吗?

举个例子:为什么会这样

angular.module('controllers', [])
.controller('NavigationController', ['$scope', '$location', function($scope, $location) {
$scope.isActive = function(route) {
return route === $location.path();
};
}])

和这个

angular.module('controllers', [])
.controller('NavigationController', function($scope, $location) {
$scope.isActive = function(route) {
return route === $location.path();
};
})

两者都有效?

这可能是微不足道的,但它让我的大脑陷入了一个我无法理解的循环。

最佳答案

这两个例子是等价的——它们只是使用了不同的语法。第一个示例使用他们所谓的“内联数组注释”(参见 here)。这种替代语法的目的只是为了提供一种方便的方法来使注入(inject)的变量名称不同于依赖项的名称。

因此,例如,如果您希望变量名称为“s”和“l”,那么您可以这样写:

angular.module('controllers', [])
.controller('NavigationController', ['$scope', '$location', function(s, l) {
s.isActive = function(route) {
return route === l.path();
};
}]);

关于javascript - Angular 服务注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25000553/

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