为了避免“未编译内容的闪现”,请使用ng-bind http://docs.angularjs.org/api/ng.directive:ngBind代替{{}}
or use ng-cloak http://docs.angularjs.org/api/ng.directive:ngCloak:
<span ng-cloak ng-show="show">Hello, {{name}}!</span>
如果您使用 ng-cloak,并且没有在 HTML 的 head 部分加载 Angular.js,则需要将其添加到 CSS 文件中,并确保它加载在页面顶部:
[ng\:cloak], [ng-cloak], .ng-cloak { display: none; }
请注意,您只需在初始页面上使用这些指令。稍后引入的内容(例如,通过 ng-include、ng-view 等)将在浏览器渲染之前由 Angular 进行编译。
除了 ng-show / hide 之外,是否有更好的方法来加载数据,其中仅将相关部分加载到 DOM 中。
ng-show/ng-hide 的一些替代方案是ng-包含 http://docs.angularjs.org/api/ng.directive:ngInclude, NG开关 http://docs.angularjs.org/api/ng.directive:ngSwitch和(自 v1.1.5 起)ng-if http://code.angularjs.org/1.1.5/docs/api/ng.directive:ngIf:
<div ng-include src="someModelPropertySetToThePartialYouWantToLoadRightNow"></div>
也可以看看https://stackoverflow.com/a/12584774/215945 https://stackoverflow.com/a/12584774/215945有关 ng-switch 与 ng-include 一起工作的示例。
请注意,ng-switch 和 ng-if 添加/删除 DOM 元素,而 ng-show/hide 仅更改 CSS(如果这对您很重要)。