我有一个 angular-js 应用程序,其中包含一些最初不应显示的控制器。尽管我使用了 ng-cloak,但它们仍会在屏幕上闪烁。问题似乎是编译被调用并删除了 ng-cloak 指令和类,这使得控制器内容可见,即使它不应该是因为 ng-show 是错误的。
如果我在 ng-cloak 的 compile 方法中暂停 js 执行,我可以看到元素在 ng-cloak 指令被删除时出现。如果我在控制器中暂停 js 执行(例如在“$scope.visible = false;”上),我可以看到控制器在页面上保持可见。然后控制器再次不可见,因为它应该在稍后加载的某个时间。
- 我正在文件 HEAD 中加载我的 app.js 和 angular.js
- 我在文档 HEAD 中有我的 CSS
- 我在我的外部css和内联中包含了带有“!important”的ng-cloak css规则
我怎样才能防止这种闪烁?为什么 ng-cloak 不尊重 ng-show?
索引.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>
应用程序.js:
app.controller('RoomsController', ['$scope',
function ($scope) {
$scope.visible = false;
}
]);