在AngularJS中,控制器是用于控制视图行为的重要组件。当定义控制器时,有两种主要的方式注入依赖项:

1. 显式依赖注入,聚聚使用字符串数组形式来注入依赖项:

myapp.controller('myCtrl', ['$scope', function($scope) {
$scope.navs = [];
}]);

  在这种方式中,依赖项(这里是`$scope`)是以字符串的形式明确列出的。这种方法被称为“显式依赖注入”,它使得依赖关系更加明显,并且有助于测试,因为可以更容易地为依赖项提供mock对象。这是AngularJS官方推荐的做法,因为它能够避免由于作用域链导致的问题,并且有助于提高代码的可维护性。这种写法中function($scope)的参数名$scope可以在函数内部更改而不影响代码的执行,因为AngularJS会根据字符串数组中的名字来查找对应的依赖项。例如,您可以将函数参数改为任何其他名称,如下所示:

myapp.controller('myCtrl', ['$scope', function(myCustomScopeName) {
myCustomScopeName.navs = [];
}]);

  

只要第一个数组元素'$scope'保持不变,AngularJS就能正确地将$scope实例注入到名为myCustomScopeName的参数中。

2. 隐匿依赖注入,即直接传递依赖项名称的形式:

myapp.controller('myCtrl', function($scope) {
$scope.navs = [];
});

  这种方式中,依赖项(如`$scope`)直接作为参数传递给构造函数。虽然这种方式简洁,但它依赖于解析器能够正确解析出函数参数名并将其与服务名称匹配。这在开发阶段可能会导致一些问题,尤其是在某些JavaScript优化工具(如闭包编译器)压缩代码时,可能会改变变量名,从而导致注入失败。这种写法中,function($scope)的$scope这个函数参数就不能更改名称了。否则AngularJS将无法识别并注入正确的服务,从而导致错误。

总的来说,第一种方法(显式依赖注入)更安全,更易于调试和测试,而第二种方法虽然简单,但在大型项目中可能会带来一些问题。因此,建议使用第一种方法来定义你的控制器。

angularjs中控制视图的控制器的两种注入依赖项及服务的写法的更多相关文章

  1. Eclipse中SVN的安装步骤(两种)和使用方法

    Eclipse中SVN的安装步骤(两种)和使用方法 一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.下载最新的Eclipse,我的 ...

  2. Java 获取*.properties配置文件中的内容 ,常见的两种方法

    import java.io.InputStream; import java.util.Enumeration; import java.util.List; import java.util.Pr ...

  3. 在Java Web程序中使用监听器可以通过以下两种方法

    之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响 ...

  4. [转]MFC子线程中更新控件内容的两种办法

    一.概述 每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应能力.一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线 ...

  5. python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...

  6. js如何实现动态的在表格中添加和删除行?(两种方法)

    js如何实现动态的在表格中添加和删除行?(两种方法) 一.总结 1.table元素有属性和一些方法(js使用) 方法一:添加可通过在table的innerHTML属性中添加tr和td来实现 tab.i ...

  7. QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)

    QT中获取选中的radioButton的两种方法   QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioBu ...

  8. Android中H5和Native交互的两种方式

    Android中H5和Native交互的两种方式:http://www.jianshu.com/p/bcb5d8582d92 注意事项: 1.android给h5页面注入一个对象(WZApp),这个对 ...

  9. C语言中存储多个字符串的两种方式

    C语言中存储多个字符串的两种方式 方式一    二维字符串数组 声明: char name[][] = { "Justinian", "Momo", " ...

  10. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

    在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...

随机推荐

  1. 解密prompt系列34. RLHF之训练另辟蹊径:循序渐进 & 青出于蓝

    前几章我们讨论了RLHF的样本构建优化和训练策略优化,这一章我们讨论两种不同的RL训练方案,分别是基于过程训练,和使用弱Teacher来监督强Student 循序渐进:PRM & ORM So ...

  2. SQL 注入漏洞详解 - Union 注入

    1)漏洞简介 SQL 注入简介 SQL 注入 即是指 Web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 Web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在 ...

  3. 硬件开发笔记(二十八):TPS54331电源设计(一):5V电源供电原理图设计

    前言   电源供电电路设计很重要,为了更好的给对硬件设计有需求的人,特意将电源设计的基础过程描述出来.  本篇描述设计常用的12V转5V电路3A.   TPS54331(DC-DC稳压器) 概述    ...

  4. 支付宝退款和结果查询接口简单实现(.Net 7.0)

    〇.前言 支付宝对 .Net 的支持还是比较充分的,在每个接口文档中都有关于 C# 语言的示例,这样就大大降低了对接的难度,很容易上手. 官方接口文档地址:退款-alipay.trade.refund ...

  5. Linux 有趣命令

    代码雨 1.上传软件包 Linux 获取 wget https://jaist.dl.sourceforge.net/project/cmatrix/cmatrix/1.2a/cmatrix-1.2a ...

  6. CentOS-7离线安装net-tools

    1.下载相关安装包 CentOS-7 所有rpm包的仓库地址:https://vault.centos.org/7.9.2009/os/x86_64/Packages/ net-tools-2.0-0 ...

  7. 【Java】SPI机制

    SPI全称: 服务供应商接口 Service Provider Interface 服务发现机制 入门概念视频来自于: https://www.bilibili.com/video/BV1E44y1N ...

  8. Jax框架的性能分析——性能分析可视化

    官方文档: https://jax.readthedocs.io/en/latest/profiling.html 将jax代码的性能文件写入到文件夹中,并给出上传第三方网站的链接生成(https:/ ...

  9. 【转载】 ReLu(Rectified Linear Units)激活函数

    原文地址: https://www.cnblogs.com/neopenx/p/4453161.html ============================== 论文参考:Deep Sparse ...

  10. 易拍照 —— 毕业生图像采集操作指南——如何使用 “易拍照” 微信小程序进行图像采集

    易拍照 -- 毕业生图像采集操作指南--如何使用 "易拍照" 微信小程序进行图像采集 ============================================