angularjs – 使用正常函数或数组表示法的控制器

前端之家收集整理的这篇文章主要介绍了angularjs – 使用正常函数或数组表示法的控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这两个有什么区别:
angular.module('myapp',[])
.controller('MyController',function($scope){...});

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',function(a){...})];//a refers to $scope

因此,上面的代码在缩小代码时工作正常,因为$scope被注入而不是a.因此,如果您传递多个参数,那么在此示例中排序很重要.看看以下内容

.controller(‘MyController’,[‘$scope’,’$timeout’,function(s,t){…})]; s作为$scope注入,t作为$timeout注入.因此,如果您更改它们的顺序,如[‘$timeout’,’$scope’,t){…})]则s为$timeout,t为$scope.因此,在这个示例中排序很重要,但在第一个示例中,代码排序无关紧要,因为名称很重要,例如$scope,$timeout.

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

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

对于多个参数,

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

那么,主要有三种annotation

>隐式注释 – 您的第一个示例代码> $inject属性注释 – $inject方法>内联数组注释 – 您的第二个示例代码

猜你在找的Angularjs相关文章