使用没有值的ng-app

Jez*_*Jez 8 angularjs

通常,您会看到Angular在具有指令的页面上初始化ng-app="myModule",但它只对使用有效ng-app.但是,正如注册控制器这样的东西myModule,它是否真的有用ng-app呢?如果没有指定模块,有没有办法注册控制器等ng-app="..."

Tom*_*Tom 4

在 Angular 1.3 之前(当您可以在全局范围内定义控制器时),Angular 能够自动发现全局定义的控制器。

从 Angular 1.3 开始,所有控制器都必须在模块内定义,因此,如果ng-app没有模块,您将获得非常有限的功能。它可能对原型设计有潜在的好处,但即使如此,你也不会得到太多。

所以,角度 1.3 之前的用法:

<div ng-app>
   <div ng-controller="SomeController">
       {{something}}
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

你可以像这样定义你的 javascript 并且它会工作:

<script>
    function SomeController($scope) {
        $scope.something = "Hello";
    }
</script>
Run Code Online (Sandbox Code Playgroud)

编辑:

正如评论中提到的,您仍然可以使用 来启用此行为$controllerProvider.allowGlobals()。也就是说,Angular 团队从一开始就试图阻止我们以这种方式定义控制器,并且应该避免:

注意:虽然 Angular 允许您在全局范围内创建控制器函数,但不建议这样做。在真实的应用程序中,您应该为您的应用程序使用 Angular 模块的 .controller 方法 [...]