为什么 AngularJS 控制器声明有这种语法结构?

2023-12-04

我一直看到以下 AngularJS 控制器语法结构。

angular.module('7minWorkout').controller('WorkoutController', 
['$scope', '$interval', '$location', 
function ($scope, $interval, $location)
{
}]);

为什么参数名称重复?为什么不就这样

angular.module('7minWorkout').controller('WorkoutController', 
    ['$scope', '$interval', '$location', 
    function ()
    {
    }]);

or

   angular.module('7minWorkout').controller('WorkoutController', 
    [ 
    function ($scope, $interval, $location)
    {
    }]);

数组语法将帮助您缩小/丑化您的js code.

angular.module('7minWorkout').controller('WorkoutController', 
  function ($scope, $interval, $location) {
    // code here
});

将被缩小并破坏为:

angular.module('7minWorkout').controller('WorkoutController', 
 function (a, b, c) {
    // code here
});

所以 Angular 将无法确定要注入哪些依赖项

另一方面,使用array宣言:

angular.module('7minWorkout').controller('WorkoutController', 
 ['$scope', '$interval', '$location', function ($scope, $interval, $location) {
    // code here
}]);

将缩小为:

angular.module('7minWorkout').controller('WorkoutController', 
  ['$scope', '$interval', '$location', function (a, b, c) {
    // code here
}]);

所以 Angular 会知道什么a, b and c代表。


如果您使用第一个示例代码,还有另一种注入变量的方法,如下所示:

WorkoutController.$inject = ['$scope', '$interval', '$location'];

or

angular.module('7minWorkout').controller('WorkoutController', /* @ngInject */
  function ($scope, $interval, $location) {
   // code here
});

这将创建$inject上面代码注释时提到的方法。


那么,主要有四种注解:

  1. 隐式注释- 第一个示例代码
  2. 内联数组注释- 第二个示例代码
  3. $inject 属性注解- $注入方法
  4. $ngInject 注释注释 - the@ngInject method

ng-注释

类似的工具ng-注释让您在应用程序中使用隐式依赖注释,并在缩小之前自动添加内联数组注释。如果您决定采用这种方法,您可能想要使用ng-strict-di.

有关更多信息,请参阅AngularJS 开发人员指南 - 使用严格依赖注入.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 AngularJS 控制器声明有这种语法结构? 的相关文章

随机推荐

  • 本地修改的按值传递的参数会发生什么情况?

    我很清楚 修改按值传递的函数参数在 C C 函数之外是无效的 但编译器允许这样做 但会发生什么 是该论证的本地副本吗 是可修改的在函数内 include
  • 如何在 Sprite Kit、Objective C 中用手指移动击中物体

    我正在尝试制作一个游戏 其中我有一些 SKSpriteNode 并且用户可以通过手指移动来击中它们 我正在使用苹果的新 Sprite 套件 为此 我尝试了一个技巧 将 Sprite X SKSpriteNode 放置在手指所在的位置 当用户
  • 如何将数据表分成两个单独的列

    我有一个数据表 其中有很多列 只有一行 DataSet myDataSet new DataSet da Fill myDataSet myDataTable new DataTable myDataTable myDataSet Tabl
  • 如何将行动态添加到表格布局中

    我在 sqlite 中有某些数据 每次单击 保存 按钮时它都会更新 并且我想将数据显示到表布局中 以便为更新的数据添加更多行 我有某些代码 但它仅显示更新的数据替换以前的数据 并且我想在数据更新时添加更多行 我知道这只是在表格布局中添加一行
  • 如何从 Databricks 笔记本将文本文件上传到 FTP

    我试图找到解决方案 但一无所获 我是这方面的新手 所以如果您知道解决方案 请帮助我 谢谢 Ok I found a solution copy file from ADLS to SFTP from ftplib import FTP TL
  • 正则表达式替换除斜线之外的所有特殊字符?

    我正在尝试制定一些正则表达式 以消除 SharePoint 在创建文件夹时不会采用的所有特殊字符 这些是不允许的字符 我假设下面的底部正则表达式将处理所有这些字符 但我也想用破折号替换 或 lt gt 这就是我到目前为止所拥有的 但如果可能
  • 什么时候纹理内存应该优先于常量内存?

    如果线程之间的数据请求频率非常高 每个线程从特定列中选取至少一个数据 那么在 Pascal 架构中使用常量内存中的数据存储是否比纹理有任何好处 编辑 这是一个拆分版本这个问题改善社区搜索 如果满足对恒定内存使用的期望 则在一般情况下使用恒定
  • Windows 文件复制内部结构(动态加密)

    我必须为 Windows 编写一个即时加密器来加密所有复制的文件 为了实现这一点 我需要一些有关 Windows 如何进行加密的详细信息FileCopy works 所以我需要如下的描述 CreateFile被调用 创建一个目标文件 然后从
  • 在同一头文件中声明、初始化和使用全局变量

    我实际上正在尝试使用在头文件 例如 x h 中初始化的变量 并希望在同一头文件中的内联代码中使用相同的变量 同一变量在另一个文件 例如 y c 中被修改 我怎样才能做到这一点 我想知道这样做的好方法 使用extern保留字 切勿在 h 文件
  • 我需要简单的 Android 动画示例 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 请给我使用 XML 的简单 Android 动画示例 我是 Android 新手
  • 点击手势在 imageView 中不起作用,但在另一个视图中起作用

    我在图像和视频叠加中工作 因为我放置了一个图像视图 我将tapGestureRecognizer分配给该图像视图 但它不起作用 对于视频 我放置了一个MPMoviePlayerController 并将tapGestureRecognize
  • 资源更改时静态绑定不会更新

    我首先想说我对绑定非常陌生 我已经在 WPF 中做了一些事情 但我从未使用过绑定 因为这个概念对我来说有点难以理解 即使我现在正在做的事情也是我从我不完全理解的教程中设法挽救的 在我的应用程序中 我有一个具有静态属性的静态类 并且有一个更改
  • 使用筛子后素数求和仍然很慢

    我尝试了下面的项目欧拉编码挑战 代码给出的答案是正确的 但我不明白为什么它需要近一分钟才能运行 在使用筛子之前 它的完成时间相似 其他用户报告的时间低至毫秒 我认为我在某个地方犯了一个基本错误 The sum of the primes b
  • mini-kanren cond-a cond-u 和 cond-e 有什么区别?

    我尝试在 clojure 中使用 mini kanren 的实现 但一直在努力理解 cond a cond u 和 cond e 之间的区别 我似乎对 cond e 很清楚 但对 cond a 和 cond u 的理解却很糟糕 cond e
  • Android Studio - 如何更改 Android SDK 路径

    当我打开时安卓SDK管理器 from 安卓工作室 显示的SDK路径为 android studio sdk 我想改变这条路 我该怎么做 从 Android Studio 1 0 1 开始 Go to 文件 gt 项目结构进入项目结构 左 g
  • 苹果拒绝应用程序,因为animationDidStop:finished:context:是一个非公共API

    Apple 拒绝了我的应用程序 因为 3 3 1 应用程序只能按照Apple规定的方式使用文档化的API 不得使用或调用任何私有API 应用程序最初必须是用 Objective C C C 或 由 iPhone OS WebKit 引擎执行
  • 有没有办法在浏览器中获取Pyqt5页面的XPATH?

    我正在使用 pyqt5 我希望用户单击嵌入在我的 pyqt5 应用程序中的浏览器来获取他 她单击的元素的 XPATH 知道它是如何完成的 或者是否可行 为了回答这个问题 我使用了以下答案 获取被点击的项目 https stackoverfl
  • 如果使用 jquery 验证发生验证错误,则将类添加到父 div

    我的输入字段有以下标记 div class required div
  • 如何动态更新Angular组件的样式

    我有一个简单的角度组件 Component selector app component test templateUrl component test component html styles example encapsulation
  • 为什么 AngularJS 控制器声明有这种语法结构?

    我一直看到以下 AngularJS 控制器语法结构 angular module 7minWorkout controller WorkoutController scope interval location function scope