javascript - Angular 服务注入(inject)

标签 javascript angularjs

我正在处理一项琐碎的任务(我开始工作了),它向选项卡导航中的 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/

相关文章:

javascript - 手机的相机与浏览器的相机图像质量

javascript - teleport-controls 在 VR 模式下的 Aframe 0.8.2 下不起作用

javascript - 上传前多张图片预览

javascript - react : Setting state in Ajax callback

javascript - 如何创建一个每 60 秒调用另一个函数的函数?

javascript - 如何获取单页内部文本?

javascript - AngularJS:[$injector:strictdi] 为 ngAutocomplete 加载指令时出错

javascript - 使用 Angular js/json 进行身份验证

javascript - AngularJS2 : How to focus input like document. getElementById(..).focus 在 javascript 中?

javascript - 如何检查字段的有效性,选择的值不能相同?