这两个有什么区别:
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方法>内联数组注释 – 您的第二个示例代码