一尘不染

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

angularjs

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

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

看看

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

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


阅读 232

收藏
2020-07-04

共1个答案

一尘不染

原因是为了保护代码免受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

2020-07-04