詳解Angular的數(shù)據(jù)顯示優(yōu)化處理
前面的幾篇文章中,我們通過{{}}來渲染數(shù)據(jù),今天就來聊聊它。
<div ng-controller="Aaa">
<div>{{text}}</div>
</div>
<script type="text/javascript">
alert(123);
var m1 = angular.module('myApp',[]);
m1.controller('Aaa',['$scope',function($scope){
$scope.text = 'xiecg';
}]);
</script>

問題顯而易見了,當(dāng)我們沒有點擊確定的時候,下面的代碼是不會執(zhí)行的,所以也沒回一直呈現(xiàn){{text}}的狀態(tài),假設(shè)網(wǎng)絡(luò)的帶寬很慢的情況下,js腳本還沒有加載進(jìn)來,頁面全是{{}}這樣的符號,顯然用戶體驗很顯然是不好的。
我們利用ng-bind指令可解決此問題。
<div ng-controller="Aaa">
<div ng-bind="text"></div>
</div>
<script type="text/javascript">
alert(123)
var m1 = angular.module('myApp',[]);
m1.controller('Aaa',['$scope',function($scope){
$scope.text = 'xiecg';
}]);
</script>

是不是很棒 ? 問題來了,這里不單單只有一個text數(shù)據(jù),有很多個,如何寫呢?
<div ng-controller="Aaa">
<div ng-bind-template="{{text}},{{text}}"></div>
</div>
<script type="text/javascript">
var m1 = angular.module('myApp',[]);
m1.controller('Aaa',['$scope',function($scope){
$scope.text = 'xiecg';
}]);
</script>
ng-bind-template="{{text}},{{text}}" 多個表單式
ng-bind="text" 單個表達(dá)式
看了上面的介紹,如果還是覺得在標(biāo)簽上寫表達(dá)式不舒服可通過ng-cloak來解決。。。
<div ng-controller="Aaa">
<div ng-cloak>{{text}}</div> ng-cloak在渲染之前是為none的,渲染結(jié)束後block
</div>
<script type="text/javascript">
alert(123);
var m1 = angular.module('myApp',[]);
m1.controller('Aaa',['$scope',function($scope){
$scope.text = 'xiecg';
}]);
</script>
ng-cloak在渲染之前是為none的,渲染結(jié)束後block。
還補(bǔ)充一點,在引入angular的時候,header中會嵌入一段css樣式。

假設(shè)後端返回給我們一段文字,上面包含了{(lán){}}這些符號,可通過ng-non-bindable來屏蔽angular解析。
<div ng-controller="Aaa">
<div ng-non-bindable>{{text}}</div>
</div>
<script type="text/javascript">
var m1 = angular.module('myApp',[]);
m1.controller('Aaa',['$scope',function($scope){
$scope.text = 'xiecg';
}]);
</script>

如果是一段html代碼,想解析的話就需要引入插件。。。
完整代碼:
<!DOCTYPE HTML>
<html ng-app="myApp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>數(shù)據(jù)顯示優(yōu)化處理</title>
<script type="text/javascript" src="https://code.angularjs.org/1.3.8/angular.min.js"></script>
<script type="text/javascript" src="http://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular-sanitize.min.js"></script>
</head>
<body>
<div ng-controller="Aaa">
<div ng-bind-html="html"></div>
</div>
<script type="text/javascript">
var m1 = angular.module('myApp',['ngSanitize']); //引入angular插件,需要在模塊依賴插件的模塊
m1.controller('Aaa',['$scope',function($scope){
$scope.html = '<h1>xiecg</h1>';
}]);
</script>
</body>
</html>

下面在說說angular中處理樣式和屬性的操作吧。
樣式:
<div ng-class="{red:true,yellow:true}">{{text}}</div>
<div ng-controller="Aaa">
<div ng-style="{{style}}">{{text}}</div>
</div>
<script type="text/javascript">
var m1 = angular.module('myApp',[]);
m1.controller('Aaa',['$scope',function($scope){
$scope.text = 'xiecg';
//對象類型的數(shù)據(jù)也可以渲染成內(nèi)聯(lián)樣式
$scope.style = {
color : 'red',
background : 'blue'
};
}]);
</script>
屬性:
<div ng-controller="Aaa">
<a ng-href="{{url}}">baidu</a>
<a ng-attr-href="{{url}}" ng-attr-title="{{text}}">baidu</a>
</div>
<script type="text/javascript">
var m1 = angular.module('myApp',[]);
m1.controller('Aaa',['$scope',function($scope){
$scope.text = 'xiecg';
$scope.url = 'https://www.baidu.com/';
}]);
</script>
自定義屬性可通過ng-attr-**這樣的形式書寫。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- 在AngularJS框架中處理數(shù)據(jù)建模的方式解析
- 用Angular實時獲取本地Localstorage數(shù)據(jù),實現(xiàn)一個模擬后臺數(shù)據(jù)登入的效果
- AngularJS 雙向數(shù)據(jù)綁定詳解簡單實例
- 詳解AngularJs中$resource和restfu服務(wù)端數(shù)據(jù)交互
- AngularJS ngModel實現(xiàn)指令與輸入直接的數(shù)據(jù)通信
- AngularJS實現(xiàn)數(shù)據(jù)列表的增加、刪除和上移下移等功能實例
- Angularjs的ng-repeat中去除重復(fù)數(shù)據(jù)的方法
- AngularJS在IE下取數(shù)據(jù)總是緩存問題的解決方法
- AngularJS控制器之間的數(shù)據(jù)共享及通信詳解
- 后端接收不到AngularJs中$http.post發(fā)送的數(shù)據(jù)原因分析及解決辦法
相關(guān)文章
angular 未登錄狀態(tài)攔截路由跳轉(zhuǎn)的方法
全面解析Angular中$Apply()及$Digest()的區(qū)別
AngularJS中controller控制器繼承的使用方法
解決angularjs WdatePicker ng-model的問題

