在角度js中从一个页面导航到另一个页面时出现HTML代码

时间:2013-11-18 14:58:20

标签: html angularjs

我设计了一个基于角度js的小应用程序。在那里,每当我从一个HTML页面导航到另一个HTML页面时,我有时会在该页面完全呈现之前看到新页面的HTML代码被加载1或2秒。就像新页面编码如下:

  Name : {{personBean.name}}
  Address: {{personBean.address}}

我可以在页面正确呈现前几秒钟看到上面的代码,因为它应该是:

 Name : Abhinav
 Address : ABC, ...

几乎在每种情况下都会发生这种情况。每个页面都有它的控制器,该页面的逻辑用javascript编码(Angular的工作方式)。似乎逻辑在执行时需要更多时间,而DOM已经加载,因此有时会显示HTML代码。

有谁能告诉我如何克服这些问题?我是否可以确保仅在完全执行控制器中存在的代码后才加载DOM?

2 个答案:

答案 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