0

我遇到了一个问题,在 IE 中刷新 AngularJS 页面会显示未编译的 AngularJS。我可以ngCloak在加载时隐藏未编译的表达式,但是当页面卸载时我找不到任何东西。我可以使用ngBind而不是表达式,然后表达式消失而不是显示原始,但我希望有更好的解决方案。有任何想法吗?

我仍在进行演示,您可以在其中看到问题;我认为用于在代码片段中显示结果的 iframe 和 JSFiddle 之类的东西阻止了我复制问题。

4

1 回答 1

0

一些可能有用也可能没用的提示。

与常见的建议相反,将 Angular 加载到文档的开头。这样,当您在页面加载期间点击 ng-if 时,浏览器就知道如何处理它。如果它在页脚 ng-if 在页面加载之前是没有意义的,因此元素会在页面加载期间闪烁然后消失

像你已经做的那样使用 class .ng-cloak。

在控制器中使用布尔值来指示何时显示元素。例如

<section ng-if='controller.loading === false'>

您可以将视图的部分或全部标记放置在这样的 div 中以删除元素,直到它们准备好显示

使用 ng-if ng-show 和 ng-hide,ng-if 实际上从 DOM 中删除元素,而其他两个只是显示或隐藏。在页面加载的流畅度方面,它们可以产生非常不同的结果。

在 ng-if 上使用表达式时,请注意确保表达式非常准确。不要在表达上马虎。考虑如果表达式中的 var 未定义会发生什么。当你不想要它时,你的元素会显示吗?

虽然我没有直接处理卸载这些相同的概念可以应用。

于 2016-02-24T23:11:00.497 回答