我是Angular开发的初学者。我不知道为什么我们在控制器内部注入两次参数:
app.controller('mycontroller', ['$scope', 'myFactory', 'Myothers', function ($scope, myFactory, Myothers) {}])
看看
app.controller('mycontroller', function ($scope, myFactory, Myothers) {})
您能解释一下我们为什么这样做吗?
原因是为了保护代码免受javascript压缩的影响。
将$inject可确保变量名可以字符串的形式保存下来。
$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,因此将导致错误。
dep1
d
但是$inject将使angular知道依赖项的实际名称是dep1因为它以string值的形式存储,因此避免了最小化。
string
因此,我们使用$inject。