0
<html ng-app>
  <body>
    <p ng-cloak>{{foo}}</p>
  </body>
</html>

我理解的方式:

  1. 呈现 HTML 页面。
  2. DOMContentLoaded 被发出,Angular 开始它的引导过程。
  3. 在编译阶段,当它看到ng-cloak指令时,它就会应用display: none !important.
  4. 在链接阶段期间/之后和重新渲染之前,它会从带有指令display: none !important的事物中删除该规则。ng-cloak

所以我理解为什么从编译阶段开始到链接阶段结束时不会显示内容。但我不明白为什么从加载 HTML 到编译阶段开始都不会显示内容。

4

2 回答 2

1

这一切都在文档中进行了解释:

[...] 当浏览器加载这个 css 规则时,所有用 ngCloak 指令标记的 html 元素(包括它们的子元素)都被隐藏。当 Angular 在模板编译期间遇到这个指令时,它会删除 ngCloak 元素属性,使编译后的元素可见。

于 2015-07-24T22:44:36.283 回答
0

除了文档中的解释。我曾在使用异步调用来检索数据的网站上工作,并且我使用 ng-cloak 来避免显示在编译过程结束之前可能还没有值的变量。我的用例是 DOMContent 可能在编译过程结束之前完成加载,但我的 Angular 数据还没有准备好。希望这能让您对一个用例有所了解,但这不是唯一的。

于 2015-07-24T22:50:57.123 回答