AngularJS1.X學習筆記2-數據綁定詳解
上一篇從整體上認識了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
雙向數據綁定允許元素從用戶處收集數據以改變程序狀態(tài)。
<!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>
你會發(fā)現文本框的內容和h1中的內容同步變化。
7、小結一下
與數據綁定的相關指令如下
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
ionic4+angular7+cordova上傳圖片功能的實例代碼
ionic是一個垮平臺開發(fā)框架,可通過web技術開發(fā)出多平臺的應用。這篇文章主要介紹了ionic4+angular7+cordova上傳圖片功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-06-06angularJS?實現長按不觸發(fā)點擊事件可以復制剪貼方法
這篇文章主要為大家介紹了angularJS實現長按不觸發(fā)點擊事件可以復制剪貼方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06