我设计了一个基于角度js的小应用程序。在那里,每当我从一个HTML页面导航到另一个HTML页面时,我有时会在该页面完全呈现之前看到新页面的HTML代码被加载1或2秒。就像新页面编码如下:
Name : {{personBean.name}}
Address: {{personBean.address}}
我可以在页面正确呈现前几秒钟看到上面的代码,因为它应该是:
Name : Abhinav
Address : ABC, ...
几乎在每种情况下都会发生这种情况。每个页面都有它的控制器,该页面的逻辑用javascript编码(Angular的工作方式)。似乎逻辑在执行时需要更多时间,而DOM已经加载,因此有时会显示HTML代码。
有谁能告诉我如何克服这些问题?我是否可以确保仅在完全执行控制器中存在的代码后才加载DOM?
答案 0 :(得分:4)
您可以使用ngBind
当a时,最好使用ngBind而不是{{expression}} 浏览器在其原始状态下暂时显示模板 在Angular编译之前。由于ngBind是一个元素属性,它 在页面加载时使绑定对用户不可见。 解决此问题的另一种方法是使用ngCloak指令。
<span ng-bind="personBean.name"></span>
<span ng-bind="personBean.address"></span>
答案 1 :(得分:2)
在您的主要主文件(我猜是index.html)中,您想要使用ng-bind而不是{{...}}
。或者,您可以将ng-cloak
添加到您的身体和
[ng\:cloak], [ng-cloak], .ng-cloak {
display: none !important;
}
到你的CSS。这适用于页面首次加载时。
要在页面之间导航时摆脱闪烁,最好使用resolve
,请参阅Delaying AngularJS route change until model loaded to prevent flicker