Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用无值的ng应用程序_Angularjs - Fatal编程技术网

Angularjs 使用无值的ng应用程序

Angularjs 使用无值的ng应用程序,angularjs,Angularjs,通常,您会在页面上看到一条指令,如ng app=“myModule”,但只使用ng app是有效的。但是,由于控制器之类的东西都是在myModule中注册的,所以只使用ng app是否有用?是否有注册控制器等的方法。如果您没有指定模块以ng app=“…”?阅读第一个示例 在下面的示例中,如果ngApp指令没有放在html元素上,那么文档将不会被编译,AppController将不会被实例化,{{a+b}}将不会被解析为3 <div ng-controller="ngAppDemo

通常,您会在页面上看到一条指令,如
ng app=“myModule”
,但只使用
ng app
是有效的。但是,由于控制器之类的东西都是在
myModule
中注册的,所以只使用
ng app
是否有用?是否有注册控制器等的方法。如果您没有指定模块以
ng app=“…”

阅读第一个示例

在下面的示例中,如果ngApp指令没有放在html元素上,那么文档将不会被编译,AppController将不会被实例化,{{a+b}}将不会被解析为3

    <div ng-controller="ngAppDemoController">
        I can add: {{a}} + {{b}} =  {{ a+b }}
    </div>

我可以加上:{{a}+{b}={a+b}
编辑: 如果未指定ng应用程序,则无法(不推荐)注册控制器。如果您只编写ng app或ng app=“”,那么您只需使用基本的角度函数,如以下内容:。因此,ng应用程序的目标是指定注册控制器时所指的模块。

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

从Angular 1.3开始,所有控制器都必须在一个模块中定义,因此,没有模块的
ng应用程序
的功能非常有限。这可能有利于原型设计,但即使如此,您也不会得到太多

因此,前角1.3用法:

<div ng-app>
   <div ng-controller="SomeController">
       {{something}}
   </div>
</div>

{{something}}
您可以这样定义您的javascript,它可以工作:

<script>
    function SomeController($scope) {
        $scope.something = "Hello";
    }
</script>

功能控制器($scope){
$scope.something=“你好”;
}
编辑:

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

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


需要说明的是,AngularJS中的ngApp指令允许您通过DOM初始化在body/html标记中自动指定应用程序的根元素,从而自动引导AngularJS应用程序。您还可以通过angular.bootstrap手动“引导”应用程序,以及引导多个AngularJS应用程序(只要不嵌套它们),从而更好地控制此初始化过程。主要的区别是您必须使用一个进程或另一个进程,这意味着ng app或angular.bootstrap是分开的,我希望这是显而易见的,因为您不想覆盖初始化

更深入地了解这一过程可以在这里看到:

在你的问题中,这一切意味着什么?ng应用程序初始化只允许每个页面有一个实例,每个HTML元素只有一个模块;而angular.bootstrap则手动提供此功能。如果你能使用angular.bootstrap这样的ng应用程序,那才是真正的魔法;因此,在这种情况下,您可以查看ngModule

我想引用一篇帮助我更好地理解如何利用ngApp等ngModule的文章,但是您应该注意,即使您使用ngModule,您也在不断利用模仿ngApp并扩展其功能。因此,您可以得出结论,剩下的功能将是通过X方法初始化DOM应用程序。。。无论您是否使用ngApp,您仍然需要处理全局问题

让我知道这是否有帮助,或者至少为您指明了一个可以遵循的方向