AngularJS:IE卸载时可以看到表达式

时间:2016-02-24 18:37:40

标签: angularjs internet-explorer ngcloak

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

我还在制作一个可以看到问题的演示;我认为iframe用于显示代码片段和JSFiddle之类的内容会阻止我复制问题。

1 个答案:

答案 0 :(得分:0)

一些可能有帮助但可能无效的提示。

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

正如您所做的那样使用class .ng-cloak。

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

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

你可以在这样的div中为视图放置一些或整个标记,以便在它们准备好显示之前删除元素

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

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

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