2016-08-03 58 views
0

我一直在努力角JS,我发现有很多方法可以创建一个模块,控制器等..不同的方式使用角度JS

例如:

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

和:

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

如果我想创建一个控制器(第一种方式):

app.controller('myController', [...]); 

创建一个控制器(方式二):

angular.module('myApp').controller('myController', [...]); 

真的......有什么区别?

谢谢!

+0

比第一种方式更清洁和更简洁吗? –

+2

两个第一段代码之间的区别在于,您在第一段代码中设置了一个变量来存储结果。其余的只是链接。 – melancia

+0

他们之间没有区别。但对于我来说,我认为你应该使用'第二种方式',你不必考虑应用程序变量,你可以通过'angular.module('myApp')'来获取应用程序模块。 –

回答

0

angular.module(“对myApp”,[])时为返回一个模块的setter实例一旦创建。将var app =放在前面只保留对模块JavaScript对象的引用。模块名称后面的空数组是依赖列表。我们通过一个空的依赖列表来区分它与getter调用,并让Angular知道它是一个setter调用,并且我们正在创建一个模块。

angular.module('myApp')是模块的getter并返回JavaScript对象。这里的区别是没有依赖列表,所以Angular知道它正在检索已经创建的模块。

如果你在同一个文件中,可以用类似app的局部变量保持对模块的引用,但是当你在不同的文件中创建控制器时,你不应该依赖全局变量调用app的存在,应该用getter调用检索模块。

0

实际上没有什么区别,完全一样。

这app.controller(...)等于angular.module( '对myApp')。控制器(...)

,因为你声明的变量名为app等于angular.module( )

而链接的事情:angular.module.controller是你们所有3个例子的组合。

把angular.module()到一个名为app或任何变量只是使语法更容易这一切^^