詳解Angular的數(shù)據(jù)顯示優(yōu)化處理
前面的幾篇文章中,我們通過(guò){{}}來(lái)渲染數(shù)據(jù),今天就來(lái)聊聊它。
<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>
問(wèn)題顯而易見(jiàn)了,當(dāng)我們沒(méi)有點(diǎn)擊確定的時(shí)候,下面的代碼是不會(huì)執(zhí)行的,所以也沒(méi)回一直呈現(xiàn){{text}}的狀態(tài),假設(shè)網(wǎng)絡(luò)的帶寬很慢的情況下,js腳本還沒(méi)有加載進(jìn)來(lái),頁(yè)面全是{{}}這樣的符號(hào),顯然用戶體驗(yàn)很顯然是不好的。
我們利用ng-bind指令可解決此問(wèn)題。
<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>
是不是很棒 ? 問(wèn)題來(lái)了,這里不單單只有一個(gè)text數(shù)據(jù),有很多個(gè),如何寫呢?
<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}}" 多個(gè)表單式
ng-bind="text" 單個(gè)表達(dá)式
看了上面的介紹,如果還是覺(jué)得在標(biāo)簽上寫表達(dá)式不舒服可通過(guò)ng-cloak來(lái)解決。。。
<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ǔ)充一點(diǎn),在引入angular的時(shí)候,header中會(huì)嵌入一段css樣式。
假設(shè)後端返回給我們一段文字,上面包含了{(lán){}}這些符號(hào),可通過(guò)ng-non-bindable來(lái)屏蔽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>
下面在說(shuō)說(shuō)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'; //對(duì)象類型的數(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>
自定義屬性可通過(guò)ng-attr-**這樣的形式書寫。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- 在AngularJS框架中處理數(shù)據(jù)建模的方式解析
- 用Angular實(shí)時(shí)獲取本地Localstorage數(shù)據(jù),實(shí)現(xiàn)一個(gè)模擬后臺(tái)數(shù)據(jù)登入的效果
- AngularJS 雙向數(shù)據(jù)綁定詳解簡(jiǎn)單實(shí)例
- 詳解AngularJs中$resource和restfu服務(wù)端數(shù)據(jù)交互
- AngularJS ngModel實(shí)現(xiàn)指令與輸入直接的數(shù)據(jù)通信
- AngularJS實(shí)現(xiàn)數(shù)據(jù)列表的增加、刪除和上移下移等功能實(shí)例
- Angularjs的ng-repeat中去除重復(fù)數(shù)據(jù)的方法
- AngularJS在IE下取數(shù)據(jù)總是緩存問(wèn)題的解決方法
- AngularJS控制器之間的數(shù)據(jù)共享及通信詳解
- 后端接收不到AngularJs中$http.post發(fā)送的數(shù)據(jù)原因分析及解決辦法
相關(guān)文章

angular 未登錄狀態(tài)攔截路由跳轉(zhuǎn)的方法

AngularJS打開(kāi)頁(yè)面隱藏顯示表達(dá)式用法示例

全面解析Angular中$Apply()及$Digest()的區(qū)別

AngularJS中controller控制器繼承的使用方法

解決angularjs WdatePicker ng-model的問(wèn)題