gpt4 book ai didi

angularjs - 使用正常函数或数组表示法的 Controller

转载 作者:行者123 更新时间:2023-12-04 05:23:28 24 4
gpt4 key购买 nike

这两个有什么区别:

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

因此,当您将代码缩小为 $scope 代替 a.因此,如果您传递多个参数,则在此示例中排序很重要。请看以下内容:
.controller('MyController', ['$scope','$timeout', function(s,t){...})]; s 作为 $scope 注入(inject),t 作为 $timeout 注入(inject)。因此,如果您更改它们的顺序,例如 ['$timeout','$scope', function(s,t){...})]那么 s 是 $timeout 并且 t 是 $scope。因此,在此示例中排序很重要,但在您的第一个示例中,代码排序并不重要,因为名称很重要,例如 $scope、$timeout。

如果您使用下面的第一个示例代码,还有另一种注入(inject)变量的方法:
MyController.$inject = ['$scope'];

对于多个参数,
MyController.$inject = ['$scope','$timeout'];

所以,主要有 annotation三种:
  • 隐式注释 - 您的第一个示例代码
  • $inject 属性注解 - $inject 方法
  • 内联数组注释 - 您的第二个示例代码
  • 关于angularjs - 使用正常函数或数组表示法的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283000/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com