【发布时间】:2013-10-20 11:35:15
【问题描述】:
我有一个 angular-js 应用程序,其中包含一些最初不应显示的控制器。尽管我使用了 ng-cloak,但它们仍会在屏幕上闪烁。问题似乎是编译被调用并删除了 ng-cloak 指令和类,这使得控制器内容可见,即使它不应该是因为 ng-show 是错误的。
如果我在 ng-cloak 的 compile 方法中暂停 js 执行,我可以看到元素在 ng-cloak 指令被删除时出现。如果我在控制器中暂停 js 执行(例如在“$scope.visible = false;”上),我可以看到控制器在页面上保持可见。然后控制器再次不可见,因为它应该在稍后加载的某个时间。
- 我正在将我的 app.js 和 angular.js 加载到文档 HEAD 中
- 我在文档 HEAD 中有我的 css
- 我已在我的外部 css 和内联中包含带有“!important”的 ng-cloak css 规则
如何防止这种闪烁?为什么 ng-cloak 不尊重 ng-show?
index.html:
<div ng-cloak class="ng-cloak" ng-controller="RoomsController" ng-show="visible">
<h1>This flashes, it can be seen if we set a breakpoint in the controller js, or after the ng-cloak directive's compile method in angular.js</h1>
</div>
app.js:
app.controller('RoomsController', ['$scope',
function ($scope) {
$scope.visible = false;
}
]);
【问题讨论】:
-
你试过嵌套你的代码吗?所以你有一个带有
ng-cloak的DIV 并且在它里面有另一个DIV 有ng-show指令? :) -
不知道为什么这会有所帮助,因为 ng-cloak 无论如何都会提前删除。但我试过了,因为你建议。没有效果。
标签: javascript html angularjs angularjs-directive