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方法>内联数组注释 – 您的第二个示例代码 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |