首页 > 其他分享 >angularjs中控制视图的控制器的两种注入依赖项及服务的写法

angularjs中控制视图的控制器的两种注入依赖项及服务的写法

时间:2024-09-28 11:23:14浏览次数:7  
标签:function 控制器 项及 AngularJS 视图 依赖 angularjs scope 注入

在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将无法识别并注入正确的服务,从而导致错误。

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

标签:function,控制器,项及,AngularJS,视图,依赖,angularjs,scope,注入
From: https://www.cnblogs.com/eminer/p/18437167

相关文章

  • GaussDB云数据库SQL应用系列-视图管理
    ​一、前言GaussDB是一款基于云计算技术的高性能关系型数据库,支持多种数据模型和分布式架构。在GaussDB中,视图管理是非常重要的一项功能,它可以帮助用户更方便地管理和查询数据。数据库视图管理是指对数据库中的视图进行创建、修改、删除、查询等操作的过程。二、准备条件参考......
  • 易优cms网站数据库搬家,出现数据表或视图不存在,[错误代码]SQLSTATE[42S02]: Base table
    当你在迁移易优CMS数据库后遇到“数据表或视图不存在”的错误提示时,通常是因为目标数据库中缺少某些表或视图。以下是一些具体的解决步骤:步骤1:确认数据库表结构检查数据库表使用数据库管理工具(如phpMyAdmin)打开目标数据库。检查数据库中是否存在相关表。步骤2:导出并......
  • 易优CMS数据表和视图不存在该怎么办?-eyoucms
    当你遇到数据表或视图不存在的问题时,可以通过以下步骤来解决:具体步骤确认缺失的数据表首先打开数据库管理工具(如phpMyAdmin),检查报错中提到的数据表是否存在。如果缺失的数据表是 ey_product_spec_data_handle,则需要创建该表。获取SQL语句从官方下载最新的数据库......
  • Tableau|二 如何利用功能区创建视图
    一认识Tableau数据1.数据角色维度和度量是Tableau的一种数据角色划分,离散和连续是另一种划分方式。1.维度和度量维度往往是一些分类、时间方面的定性字段,将其拖放到功能区时,Tableau不会对其进行计算,而是对视图区进行分区。度量往往是数值字段,将其拖放到功能区时,Ta......
  • Oracle数据库中创建用户并对用户授予特定的视图访问权限。
    1.创建用户名和密码---创建用户名密码createuseruseridentifiedbypassword;--userpassword分别为用户名及密码登录用户使用defaulttablespacetsp_ehis_indextemporarytablespacetsp_ehis_tempprofiledefault;2.对用户进行相对应的授权增加用户的......
  • 在 React 应用程序中实现简单的页面视图跟踪器
    简介:了解用户参与度对于任何web应用程序都至关重要,而要跟踪的最简单的指标之一就是页面浏览量。在这篇博文中,我们将逐步介绍在react应用程序中实现基本页面视图跟踪器的过程,包括如何使用postman和curl命令获取服务的api密钥。第1步:设置你的react项目首先,让我......
  • (LeetCode 热题 100) 199. 二叉树的右视图(递归、深度优先搜索dfs)
    199.二叉树的右视图思路:递归每次都优先右边子树,然后才是左子树。/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}......
  • 11 UML中的逻辑视图、进程视图、实现视图、部署视图
    UML(UnifiedModelingLanguage,统一建模语言)是一种用于对软件密集系统进行可视化建模的标准语言。在UML中,系统可以从不同的角度进行描述,这些不同的角度被称为视图。具体来说,UML中的逻辑视图、进程视图、实现视图和部署视图分别代表了系统的不同方面。1.逻辑视图(LogicalView)定义......
  • DevExpress WinForms中文教程:Data Grid - 如何设置视图和列外观?
    本教程将带您了解用于更改网格元素外观的外观设置,在哪里可以找到视图或单个列的这些设置,以及如何更改视图的绘制样式,以便您可以自定义主题绘制的元素。P.S:DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构......
  • 计算机组成与体系结构——计算机功能和互连地顶层视图
    计算机的部件几乎所有的当代计算机设计都是以冯·诺依曼提出的概念为基础的,它基于以下三个概念:数据和指令存储在单一的读/写存储器中存储器的内容通过位置寻址,而不关心存储在其中的数据类型从一条指令到下一条指令(除非显示修改)顺序执行。一种方式是硬连线程序(HardwiredP......