国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

AngularJS1.X學習筆記2-數據綁定詳解

2019-11-19 16:57:41
字體:
來源:轉載
供稿:網友

上一篇從整體上認識了Angular,從現在開始更加深入的學習Angular的特性。本次學習的是數據綁定。應該所有的MVC框架都會用到數據綁定,比如我所知道的ThinkPHP、struts等,只有實現了數據綁定才能將模型層和視圖層分離,實現MVC。Angular的數據綁定比較特別,它支持雙向數據綁定。

1、ng-bind

<!DOCTYPE html><html lang="en" ng-app="myApp"><head> <meta charset="UTF-8"> <title>databinding1</title></head><body> <h1 ng-controller='dataCtrl' ng-bind='data'>   </h1> <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script> <script type="text/javascript">  angular.module('myApp',[])  .controller('dataCtrl',function($scope){   $scope.data = "你好啊!";  }) </script></body></html>

ng-bind實現了一個簡單單向綁定。

2、{{}}

類似ng-bind,用的比較多。

<!DOCTYPE html><html lang="en" ng-app="myApp"><head> <meta charset="UTF-8"> <title>databinding1</title></head><body> <h1 ng-controller='dataCtrl'>  {{data}} </h1> <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script> <script type="text/javascript">  angular.module('myApp',[])  .controller('dataCtrl',function($scope){   $scope.data = "你好啊!";  }) </script></body></html>

這種綁定的缺點是,開始加載時可能會出現類似{{data}}這樣的東西。

解決方法是使用ng-bind或ng-cloak,ng-cloak應該只在有數據綁定的地方使用,否則處理中用戶將看到空白。

<!DOCTYPE html><html lang="en" ng-app="myApp"><head> <meta charset="UTF-8"> <title>databinding2</title></head><body ng-cloak> <h1 ng-controller='dataCtrl'>  {{data}} </h1> <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script> <script type="text/javascript">  angular.module('myApp',[])  .controller('dataCtrl',function($scope){   $scope.data = "你好啊!";  }) </script></body></html>

我測試了一下ng-cloak,不知道為什么不行,有人知道的話請告知一下。

3、ng-bind-html

這個指令可以用html的方式處理數據,它不會將html代碼解析成實體。下面對比一下ng-bind和ng-bind-html.

<!DOCTYPE html><html lang="en" ng-app="myApp"><head> <meta charset="UTF-8"> <title>databinding3</title></head><body> <div ng-controller='dataCtrl' ng-bind='data'>   </div> <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script> <script type="text/javascript">  angular.module('myApp',[])  .controller('dataCtrl',function($scope){   $scope.data = "<h1 style='color:red;'>你好啊</h1>";  }) </script></body></html>

<!DOCTYPE html><html lang="en" ng-app="myApp"><head>  <meta charset="UTF-8">  <title>databinding3</title></head><body>  <div ng-controller='dataCtrl' ng-bind-html='data'>      </div>  <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script>  <script type="text/javascript">    angular.module('myApp',[])    .controller('dataCtrl',function($scope){      $scope.data = "<h1 style='color:red;'>你好啊</h1>";    })  </script></body></html>

換成ng-bind-html時出錯了

這是因為Angular默認是不信任html的,所以要這樣做。

<!DOCTYPE html><html lang="en" ng-app="myApp"><head> <meta charset="UTF-8"> <title>databinding3</title></head><body> <div ng-controller='dataCtrl' ng-bind-html='data'>   </div> <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script> <script type="text/javascript">  angular.module('myApp',[])  .controller('dataCtrl',function($scope,$sce){   $scope.data = $sce.trustAsHtml("<h1 style='color:red;'>你好啊</h1>");  }) </script></body></html

這樣就可以了。

4、ng-bind-template

ng-bind只接受單個數據綁定表達式,而ng-bind-template則相對靈活些。

<!DOCTYPE html><html lang="en" ng-app="myApp"><head> <meta charset="UTF-8"> <title>databinding3</title></head><body> <div ng-controller='dataCtrl' ng-bind-template='{{data1}}愛{{data2}} '>   </div> <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script> <script type="text/javascript">  angular.module('myApp',[])  .controller('dataCtrl',function($scope,$sce){   $scope.data1 = "我";   $scope.data2 = "中國";  }) </script></body></html><!-- 我愛中國-->

5、ng-non-bindable

有時我們使用了{{}}但是我們并不是要綁定數據,直接用會出錯,所以要像這樣

<!DOCTYPE html><html lang="en" ng-app="myApp"><head> <meta charset="UTF-8"> <title>databinding1</title></head><body> <h1 ng-controller='dataCtrl' ng-non-bindable>  ng中綁定數據的方法是{{data}} </h1> <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script> <script type="text/javascript">  angular.module('myApp',[])  .controller('dataCtrl',function($scope){   //$scope.data = "你好啊!";  }) </script></body></html>

6、雙向數據綁定ng-model

雙向數據綁定允許元素從用戶處收集數據以改變程序狀態。

<!DOCTYPE html><html lang="en" ng-app="myApp"><head> <meta charset="UTF-8"> <title>databinding5</title></head><body> <div ng-controller='dataCtrl'>  <h1>{{data}}</h1>  <input type="text" name="data" ng-model="data"> </div>    <script type="text/javascript" src="../node_modules/angular/angular.min.js"></script> <script type="text/javascript">  angular.module('myApp',[])  .controller('dataCtrl',function($scope){   $scope.data = "你好啊!";  }) </script></body></html>

你會發現文本框的內容和h1中的內容同步變化。

7、小結一下

與數據綁定的相關指令如下

  

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 磐石市| 绍兴县| 龙泉市| 黄大仙区| 富源县| 肃南| 湟源县| 太和县| 宣武区| 广宗县| 盘山县| 常熟市| 浦东新区| 云南省| 射洪县| 武鸣县| 肇东市| 客服| 河源市| 抚顺县| 堆龙德庆县| 金坛市| 鄂温| 连南| 衡山县| 阳春市| 项城市| 辉县市| 东阿县| 玉林市| 常德市| 陆川县| 额尔古纳市| 章丘市| 基隆市| 石门县| 盐亭县| 贵南县| 务川| 杭州市| 翼城县|