当前位置: 首页 > 面试题库 >

为什么我们在数组和函数中注入参数

阚夕
2023-03-14
问题内容

我是Angular开发的初学者。我不知道为什么我们在控制器内部注入两次参数:

app.controller('mycontroller', ['$scope', 'myFactory', 'Myothers', function ($scope, myFactory, Myothers) {}])

看看

app.controller('mycontroller', function ($scope, myFactory, Myothers) {})

您能解释一下我们为什么这样做吗?


问题答案:

原因是为了保护代码免受javascript压缩的影响。

$inject可确保变量名可以字符串的形式保存下来。

因此,理想情况下,您的应用程序代码应如下所示:

 var app = angular.module('YourApp', []);
 var appCtrl = app.controller('AppCtrl', AppCtrl);

 appCtrl.$inject = ['dep1', 'dep2']; //add all the dependencies

 function AppCtrl (dep1,dep2){  //add the name of the dependencies here too
    //your controller logic
 }

在压缩期间,javascript用自定义名称替换了变量名,因此dep1可能被替换d,因此将导致错误。

但是$inject将使angular知道依赖项的实际名称是dep1因为它以string值的形式存储,因此避免了最小化。

因此,我们使用$inject



 类似资料:
  • 我开始了解axiosendpoint,我想知道为什么我们要对endpoint使用查询参数? 谷歌表示,我们之所以使用它,是因为它“有助于检索特定数据,并根据用户传递的输入执行操作” 我相信有一个“过滤”函数可以用来过滤响应,我假设我们可以使用查询参数来做类似的事情,但我不确定它们是否就是这个意思。我创建了一个客户机和服务器示例,在该示例中,我将查询参数传递给服务器,服务器返回一个带有我发送的参数的

  • 我的代码中只有参数化构造函数,需要通过它进行注入。 我想刺探参数化构造函数以注入模拟对象作为junit的依赖项。 但我们有什么东西可以在构造函数中注入模拟对象并对其进行监视吗?。

  • 我试图将构造函数注入模式应用于CDI应用程序中的bean,但遇到以下错误消息: 的确,为了使用构造函数注入模式,我有意地设计了一个需要参数的构造函数的类: 通过查看不可代理bean类型的CDI规范,我看到: 3.15.不可修复的bean类型 容器使用代理提供某些功能。容器不能代理某些合法bean类型: 没有不带参数的非私有构造函数的类, 被宣布为最终的类, 具有非静态的、具有公共可见性、受保护可见

  • 问题内容: 我是angular的新手,想知道为什么和何时应该两次注入所有需要的依赖项。 范例: 但是我们也可以将以上代码编写为: 为什么呢 问题答案: 这是为了使应用程序具有 最小安全性 。 小心:如果您打算压缩代码,则您的依赖项名称将被重命名并破坏您的应用程序。 当你将(或 可能 ),再压缩所有文件,依赖由像改为,,…等等。 但是,当您使用数组和类似字符串的语法时,如第二个片段所示,它们永远不会

  • 在java中,我们有一些方法来实现一些逻辑。那么匿名函数有什么用呢?当我们真的需要匿名函数时。

  • 我看到一个例子,其中有一个员工列表(表格)和他们各自的月薪。我查了一下工资,在工资中看到了完全相同的表格。这很奇怪。 这是必须要做的事情——我们必须弄清楚这个月我们支付了多少工资。为此,我们需要在数据库中合计他们的工资金额,如下所示: 我知道如果我没有在上面的代码中使用< code>GROUP BY,我会得到一个错误。这就是我不明白的地方。 我们正在从员工表中选择员工ID。被告知它必须从员工表中添