1

我只是在学习 AngularJS,我正在寻找许多不同的方法来做同样的事情,我真的想知道哪个更好,为什么要选择一个选项而不是另一个选项。

我已经看到控制器以两种方式创建:

app.controller('CustomersController', function ($scope, customersService) {});

app.controller('CustomersController', ['$scope', 'customersService', function ($scope, customersService) {}]);

显然第二种方式是更多的打字,但是使用这种方式比第一种方式有好处吗?

4

3 回答 3

4

两者都可以正常工作,但是一旦代码被缩小,只有第二种语法可以工作。大多数 JavaScript 缩小器都会重命名参数标识符,因此您的代码可能如下所示:

a.controller('CustomersController',function(b,c){});

如果发生这种情况,Angular 将无法确定需要注入哪些服务。但是,如果您使用数组语法,您将获得如下所示的缩小代码:

a.controller('CustomersController',['$scope','customersService',function(b,c){}]);

在这种情况下,数组的最后一个元素用作控制器函数,所有前面的元素都是代表服务名称的字符串。该列表有效地应用于控制器功能,每个服务由压缩器选择的任意标识符标识。

于 2013-05-23T12:46:44.980 回答
1

任何一个都可以,如果您打算缩小代码,则建议使用第二个,因为第一个将被缩小为:

app.controller('CustomersController', function (a, b) {});

由于依赖注入的工作方式,这不起作用,但第二个将变为:

app.controller('CustomersController', ['$scope', 'customersService', function (a, b) {}]);

哪个角度内部知道将 $scope 放入 a 并将 customersService 放入 b。

于 2013-05-23T12:47:39.040 回答
0

使用第二种方法可以让您使用变量缩小代码。如果你不这样做:

['$scope', 'customersService', function ($scope, customersService) {}]

然后你的变量可能会被缩小,这会破坏你的应用程序。

于 2013-05-23T12:46:59.433 回答