gpt4 book ai didi

angularjs - Angular 无名 ng-app

转载 作者:行者123 更新时间:2023-12-05 00:58:19 25 4
gpt4 key购买 nike

<body ng-app> 如何以及为什么用过的?我们如何将 Controller 、指令等分配给这个无名模块。还要解释这与手动引导 Angular 应用程序有何关系。
Fiddle

最佳答案

这实际上是三个独立的问题,但我很乐意解决每个问题。

  • 如何以及为什么使用?

  • Angular 不会也不能正确引导应用程序,除非该应用程序有入口点。根据 documentation ,如果未传递命名应用实例的参数,则 Angular 将尝试 auto-bootstrap通过爬取 DOM 并使用遇到的第一个 ngApp 指令实例来为您应用程序。

    我们通常希望将入口点放在 <body>包含我们需要的所有潜在 DOM 的元素,而不用 <head> 混淆它元素,例如加载脚本和 css。也就是说,如果您正在自动引导您的应用程序,推荐的位置是在 HTML 元素上。

  • 我们如何将 Controller 、指令等分配给这个无名模块?

  • 模块、 Controller 等必须附加到某些东西上,以便 Angular 能够正确地拾取它们并与之交互。

    一旦应用程序被引导,Angular 将开始解析 DOM,寻找指令。如果您有一个应用程序实例(并且您有),您的 Controller 将自动添加到该实例中。如果您查看 bootstrap文档 -> 自动初始化,您会发现以下内容:

    Angular initializes automatically upon DOMContentLoaded event or when the angular.js script is evaluated if at that time document.readyState is set to 'complete'. At this point Angular looks for the ng-app directive which designates your application root. If the ng-app directive is found then Angular will:

    • load the module associated with the directive.
    • create the application
    • injector compile the DOM treating the ng-app directive as the root of the compilation. This allows you to tell it to treat only a portion of the DOM as an Angular application.



  • fiddle 到底是如何工作的?

  • 这实际上是烟雾和镜子,真的不应该算:)。如果您查看 JSFiddle 的网络流量,您会发现 AngularJS 实际上正在被加载。结果,您的插值实际上自动绑定(bind)到 JSFiddle Angular 实例,不是您自己提供的(或者在这种情况下没有提供),被解析并随后以 2 的形式呈现到 DOM 中.

    关于angularjs - Angular 无名 ng-app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752655/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com