gpt4 book ai didi

javascript - AngularJS:如何在加载时防止页面出现 "code flash"

转载 作者:可可西里 更新时间:2023-11-01 02:49:42 26 4
gpt4 key购买 nike

我使用 AngularJS 创建了一个简单的应用程序。当我打开页面一秒钟时,我看到以下屏幕:

enter image description here

但是,加载完成后,我看到加载和样式化的内容很好:

enter image description here

如何防止 AngularJS 代码在我的页面上闪烁?这与 FOUC 有关吗?

这是 HTML 代码:

<!doctype html>
<html class="no-js" lang="en" ng-app="MainApp">

<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Foundation | Welcome</title>
<link rel="stylesheet" href="css/foundation.css" />
<script src="js/vendor/modernizr.js"></script>

<style>
.row.full-width {
width: 100%;
margin-left: auto;
margin-right: auto;
max-width: initial;
}
</style>

</head>

<body ng-controller="MainCtrl">
<div class="off-canvas-wrap" data-offcanvas>
<div class="inner-wrap">
<nav class="tab-bar">
<section class="right-small">
<a class="right-off-canvas-toggle menu-icon" href="#"><span></span></a>
</section>
<section class="left tab-bar-section">
<h1 class="title">Salary Calculator</h1>
</section>
</nav>

<aside class="right-off-canvas-menu">
<ul class="off-canvas-list">
<li>
<label>Location</label>
</li>
<li><a href="#">United Kingdom</a>
</li>
</ul>
</aside>

<section class="main-section">


<div class="row full-width">
<div class="large-4 columns">

<ul class="tabs" data-tab>
<li class="tab-title active"><a href="#panel1">Annual Salary</a>
</li>
<li class="tab-title"><a href="#panel2">Monthly Expenses</a>
</li>
</ul>
<div class="tabs-content">
<div class="content active" id="panel1">
<div class="row">
<div class="large-12 columns">
<input ng-change="calculate()" type="text" placeholder="Salary" ng-model="salary"/>
</div>
</div>
</div>
<div class="content" id="panel2">
<div class="row">
<div class="large-4 columns">
<input ng-change="calculate()" type="text" placeholder="Rent" ng-model="rent" />
</div>
<div class="large-4 columns">
<input ng-change="calculate()" type="text" placeholder="Wireless, TV, Home Phone" ng-model="telecom"/>
</div>

<div class="large-4 columns">
<input ng-change="calculate()" type="text" placeholder="TV License" ng-model="tv" />
</div>
</div>

<div class="row">
<div class="large-4 columns">
<input ng-change="calculate()" type="text" placeholder="Mobile Phone" ng-model="mobile"/>
</div>
<div class="large-4 columns">
<input ng-change="calculate()" type="text" placeholder="Subscription" ng-model="subscription"/>
</div>

<div class="large-4 columns">
<input ng-change="calculate()" type="text" placeholder="Electricty" ng-model="electricity" />
</div>
</div>

<div class="row">
<div class="large-4 columns">
<input ng-change="calculate()" type="text" placeholder="Food" ng-model="food"/>
</div>
<div class="large-4 columns">
<input ng-change="calculate()" type="text" placeholder="Transport" ng-model="transport" />
</div>

<div class="large-4 columns">
<input ng-change="calculate()" type="text" placeholder="Charity" ng-model="charity"/>
</div>
</div>

<div class="row">
<div class="large-12 columns">
<input ng-change="calculate()" type="text" placeholder="Other" ng-model="other"/>
</div>
</div>

</div>
</div>

</div>
<div class="large-8 columns" ng-cloak >
<table >
<thead>
<tr>
<th width="200"></th>
<th width="250">Yearly</th>
<th width="250">Monthly</th>
<th width="250">Weekly</th>
<th width="250">Daily</th>
</tr>
</thead>
<tbody ng-repeat="val in results">
<tr>
<td>{{val.rowType}}</td>
<td>{{val.yearly}}</td>
<td>{{val.monthly}}</td>
<td>{{val.weekly}}</td>
<td>{{val.daily}}</td>

</tr>
</tbody>
</table>

</div>
</div>



</section>

<a class="exit-off-canvas"></a>

</div>
</div>

<script src="../bower_components/angularjs/angular.js"></script>


<script src="js/app-service.js"></script>
<script src="js/app-controller.js"></script>
<script src="js/app-directives.js"></script>
<script src="js/app.js"></script>

<script src="js/vendor/jquery.js"></script>
<script src="js/foundation.min.js"></script>

<script>
$(document).foundation();
</script>
</body>

</html>

编辑:

请参阅my answer以及除了已接受的解决方案之外的替代解决方案。

最佳答案

ng-cloak 会在一定程度上有所帮助,但您可以使用 ng-bind 指令而不是使用 {{ }} 来完全阻止它。

例如

<td ng-bind="val.monthly"> </td>

不是

<td>{{val.monthly}}</td>

关于javascript - AngularJS:如何在加载时防止页面出现 "code flash",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28514241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com