避免在angular.js编译/插入文档之前暂时显示双花括号符号

在加载大量图像/脚本时,似乎主要是IE中的一个问题,在标记中显示文字{{stringExpression}}的时间可能会很长,然后一旦完成angular度就会消失它是文档的编译/插值。

有一个共同的原因,为什么会发生这将表明我正在做一些普遍错误的事情,还是有一种已知的方法来防止这种情况?

我认为你正在寻找ngCloak指令: http : ngCloak : ngCloak

从文档:

ngCloak指令用于阻止浏览器在加载应用程序时以原始(未编译)forms简要显示Angular html模板。 使用此指令可避免由html模板显示引起的不良闪烁效应。

该指令可以应用于<body>元素,但通常优先考虑细粒度的应用程序,以便从逐步呈现浏览器视图中受益。

另外,您可以使用<span ng-bind="hello"></span>而不是{{hello}}

http://jsfiddle.net/4LhN9/34/

为了提高上次加载脚本时class ='ng-cloak'方法的有效性,请确保在文档的头部加载了以下css:

 .ng-cloak { display:none; } 

只需将隐藏的CSS添加到页面的头部或您的一个CSS文件中即可:

 [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak, .ng-hide { display: none !important; } 

然后你可以按照正常的Angular实践来使用ngCloak指令 ,甚至在Angular本身加载之前它也能工作。

这正是Angular所做的:angular.js结尾处的代码将上面的CSS规则添加到页面的头部。

在你的CSS添加folllowing

 [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { display: none !important; } 

然后在你的代码中你可以添加ng-cloak指令。 例如,

 <div ng-cloak> Welcome {{data.name}} </div> 

而已!

您也可以使用ng-attr-src="{{variable}}"而不是src="{{variable}}" ,只有在编译器编译模板后才会生成属性。 这在文档中提到: https : //docs.angularjs.org/guide/directive#-ngattr-attribute-bindings

我同意@ pkozlowski.opensource的答案,但是ng-clock类对我来说并不适用于ng-repeat。 所以我想推荐你使用class来获得简单的分隔符expression式,如{{name}}和ngCloak指令。

 <div class="ng-cloak">{{name}}<div> 

 <li ng-repeat="item in items" ng-cloak>{{item.name}}<li>