使用普通函数或数组表示法的控制器

2023-11-22

这2个有什么区别:

angular.module('myapp' ,[])
.controller('MyController', function($scope){...});

and

angular.module('myapp' ,[])
.controller('MyController, ['$scope', function($scope){...})];

对于像我这样刚接触 AngularJS 的人来说,这相当复杂。语法与 Java 和 C 差别太大。

非常感谢。


他们之间没有什么区别。两个代码的工作方式相同。但是,如果您使用第一个代码并且当您缩小代码时,那么它会造成混乱。

找个例子:

.controller('MyController', function(a){...});//$scope is changed to a

并且您的代码将无法工作,因为 angularjs 代码使用 $scope 变量,因为它不接受第一个、第二个、第三个等等参数。

因此,第二个代码比第一个更安全,就好像当您缩小代码时,它仍然采用相同的变量,即 $scope。

找个例子:

.controller('MyController', ['$scope', function(a){...})];//a refers to $scope

因此,当您缩小代码时,上面的代码可以正常工作,因为 $scope 被注入代替 a。因此,如果您传递多个参数,则在此示例中排序很重要。请看以下内容:

.controller('MyController', ['$scope','$timeout', function(s,t){...})];s 作为 $scope 注入,t 作为 $timeout 注入。所以如果你改变它们的顺序['$timeout','$scope', function(s,t){...})]那么 s 是 $timeout,t 是 $scope。因此,在此示例中排序很重要,但在第一个示例代码中排序并不重要,因为名称很重要,例如 $scope、$timeout。


如果您使用第一个示例代码,还有另一种注入变量的方法,如下所示:

MyController.$inject = ['$scope'];

对于多个参数,

MyController.$inject = ['$scope','$timeout'];

那么,主要有以下三种注解:

  1. 隐式注释 - 您的第一个示例代码
  2. $inject 属性注释 - $inject 方法
  3. 内联数组注释 - 您的第二个示例代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用普通函数或数组表示法的控制器 的相关文章

随机推荐