AngularJS模块定义中的[]参数是否必须?

时间:2015-05-29 04:50:11

标签: angularjs

在AngularJS模块的定义中, <select multiple id='testbox'> <option value='1'>First Option</option> <option value='2'>Second Option</option> <option value='3'>Third Option</option> <option value='4'>Fourth Option</option> <option value='5'>Fifth Option</option> <option value='6'>Sixth Option</option> <option value='7'>Seventh Option</option> <option value='8'>Eighth Option</option> <option value='9'>Ninth Option</option> <option value='10'>Tenth Option</option> <option value='11'>First Option</option> <option value='12'>Second Option</option> <option value='13'>Third Option</option> <option value='14'>Fourth Option</option> <option value='15'>Fifth Option</option> <option value='16'>Sixth Option</option> <option value='17'>Seventh Option</option> <option value='18'>Eighth Option</option> <option value='19'>Ninth Option</option> <option value='20'>Tenth Option</option> <option value='21'>First Option</option> <option value='22'>Second Option</option> <option value='23'>Third Option</option> <option value='24'>Fourth Option</option> <option value='25'>Fifth Option</option> <option value='26'>Sixth Option</option> <option value='27'>Seventh Option</option> <option value='28'>Eighth Option</option> <option value='29'>Ninth Option</option> <option value='30'>Tenth Option</option> </select> 是此模块上其他依赖模块的参数。

[]

我的问题是,
这个参数<script> var app = angular.module('myApp',[]); app.controller("myCtrl", function($scope) { $scope.firstName = "John"; $scope.lastName = "Doe"; }); </script> 是否必要,,因为以下链接或示例他们没有提到[]参数,但在上面的例子中(w3schooles),如果我们删除'[] '参数然后代码不会给出正确的输出see it

请参阅此链接openstack,他们未使用[]参数

[]

2 个答案:

答案 0 :(得分:3)

当您声明您自己的模块时,需要使用数组或[]参数来指定相关模块,因此每个模块只需执行一次。

第二种表示法,没有参数只是检索模块,因此您可以将控制器/服务/过滤器/ ...附加到它。

对模块的声明使用数组表示法,如果要添加某些内容,请使用单参数表示法。

例如:

app.module.js中的

    //You want to make use of the ngRoute module, 
    //so you have to specify a dependency on it
    angular.module('app', ['ngRoute']);

当您声明它时,您只会在模块上指定一次依赖项。

在main.controller.js

//You want to add a controller to your module, so you want to retrieve your module
angular.module('app').controller('mainCtrl', mainCtrl);

function mainCtrl() { };

现在angular会尝试按该名称找到一个模块,而不是创建一个模块,当它找不到时,你会得到一些错误,这就解释了你原来的问题。 每次要向模块添加内容时,通常都会执行此操作。

请注意,您也可以通过在创建模块时将模块存储在全局变量中,然后在想要向其添加内容时通过该变量访问模块来实现此目的,但是您可能知道,创建全局变量是糟糕的做法。

答案 1 :(得分:1)

面对角度错误是一种幸福,因为它提供了控制台中错误描述的链接。

来自这样的例子page ......

  

定义没有模块依赖关系的模块时,应该定义依赖关系数组并为空。

var myApp = angular.module('myApp', []);

  

要检索对同一模块的引用以进行进一步配置,请调用不带数组参数的angular.module。

var myApp = angular.module('myApp');