定义Angular应用程序有什么好处?

Ada*_*NYC 15 angularjs

在一些AngularJS教程中,angular app定义为:

myApp = angular.module("myApp",[]);
Run Code Online (Sandbox Code Playgroud)

但我们也可以没有它.我能看到的唯一区别是当我们定义控制器时,我们不能使用成语:

myApp.controller("myCtrl",function(){ })
Run Code Online (Sandbox Code Playgroud)

但必须使用

function myCtrl (){}
Run Code Online (Sandbox Code Playgroud)

鉴于我只为我的网站创建一个应用程序,明确定义myApp还有其他好处吗?如果我没有定义myApp,那么我的模块附加到哪里?

如果有,我如何在Jasmin的测试中重新创建myApp?

bml*_*ite 34

您可以(至少)3种方式定义控制器:

  1. 将控制器定义为全局var(存储在window对象上)

    function Ctrl() {}
    
    Run Code Online (Sandbox Code Playgroud)

    这跟做的一样:

    window.Ctrl = function () {}
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个模块并使用返回的实例创建新控制器:

    var app = angular.module('app', []);
    app.controller('Ctrl', function() {});
    
    Run Code Online (Sandbox Code Playgroud)
  3. 直接在模块上创建控制器而不存储任何引用(与2但不使用vars 相同):

    angular.module('app', []);
    angular.module('app').controller('Ctrl', function() {});
    
    Run Code Online (Sandbox Code Playgroud)

从Angular的角度来看,他们都是这样做的,你甚至可以将它们混合在一起,它们就会起作用.唯一的区别是,选择1使用全局变量,而期权23控制器存储的角度的私人对象内.