AngularJS:MVx框架,把数据、表现、逻辑分离开
方便程序员——避免重复劳动(获取、事件)javascript
版本:1.2.x 和 1.3.xcss
ng-bind 输出(不经常使用)
ng-app 范围html
模板:{{}},输出java
一、ng-app=" " 定义angularJS的使用范围;程序员
二、ng-init="变量=值;变量='值'" 初始化变量的值,有多个变量时,中间用分号隔开;angularjs
三、ng-model="变量" 定义变量名;json
四、ng-bind="变量" 绑定变量名,获取该变量的数据。这里的变量就是第3条的变量名。可是通常都用双重花括号来获取变量的值,好比:{{变量}}。数组
ng-model 指令 绑定 HTML 元素 到应用程序数据。双向绑定app
ng-model 指令也能够:框架
为应用程序数据提供类型验证(number、email、required)。
为应用程序数据提供状态(invalid、dirty、touched、error)。
为 HTML 元素提供 CSS 类。
绑定 HTML 元素到 HTML 表单。
1.Angular和JavaScript不互通
2.盯住数据
<!doctype html> <!-- ng-app使用范围HTML --> <!-- 包含AngularJs不能直接运行,须要引导,最简单的方法是AnjularJs自定义的ng-app HTML属性 --> <html lang="en" ng-app=""> <head> <meta charset="UTF-8"> <title>Document</title> <!-- 引用AngularJs库,一个封装好的JavaScript文件,不依赖其余库; --> <script src="angular.min.js"></script> </head> <body> <!-- ng-init:数据初始化 --> <div ng-init="a=0;b=0;json={a:12,b:4}"> <!-- ng-modle数据源 --> <input type="text" ng-model="json.a"> <input type="text" ng-model="json.b"> <!-- {{数据输出}} --> result:`json`.`a-json`.`b` </div> </body> </html>
二、class方法:ng-class
<!doctype html> <!-- ng-app使用范围HTML --> <html lang="en" ng-app=""> <head> <meta charset="UTF-8"> <title>Document</title> <script src="angular.min.js"></script> <style type="text/css" media="screen"> .box {width: 200px;height: 300px;background: #CCC;} .box2 {width: 200px;height: 200px;background: red;} </style> </head> <body> <!-- ng-class:数组做为输入 --> <div ng-init="arr=['box','box2','active']" > <!-- class第一种方法 --> <input type="text" ng-model="cls"> <div class="`cls`"> class第一种方法 </div> <!-- class第二种方法 --> <div ng-class="arr" >class第二种方法</div> </div> </body> </html>
三、style方法:ng-style
<!doctype html> <!-- ng-app使用范围HTML --> <html lang="en" ng-app=""> <head> <meta charset="UTF-8"> <title>Document</title> <script src="angular.min.js"></script> <style type="text/css" media="screen"> .box {width: 200px;height: 300px;background: #CCC;} .box2 {width: 200px;height: 200px;background: red;} </style> </head> <body> <div ng-init="json={width:'200px',height: '300px',background: '#CCC'};" > <!-- style第一种方法 --> <input type="text" ng-model="cls"> <div style="`cls`"> style第一种方法 </div> <!-- style第二种方法 --> <div ng-style="json"> style第二种方法 </div> </div> </body> </html>
四、ng-if
<!doctype html> <!-- ng-app使用范围HTML --> <html lang="en" ng-app=""> <head> <meta charset="UTF-8"> <title>Document</title> <script src="angular.min.js"></script> <style type="text/css" media="screen"> </style> </head> <body> <div ng-init="show=true" > <div ng-if="show"> ng-if:false 不显示 <br> ng-if: true 显示 <br> </div> </body> </html>
五、三目运算符
<!doctype html> <!-- ng-app使用范围HTML --> <html lang="en" ng-app=""> <head> <meta charset="UTF-8"> <title>Document</title> <script src="angular.min.js"></script> <style type="text/css" media="screen"> </style> </head> <body> <div ng-init="arr=[12,5,43,22,1]" > <div ng-repeat="(key, value) in arr" style="{{key%2==1?'background: yellow':'';}}"> ng-repeat:第一种写法 `key`:`value` </div> <br> <div ng-repeat="v in arr" style="{{v%2==1?'background:#CCC':''}}";> ng-repeat:第二种写法 `v` </div> </body> </html>
六、选项卡-angularjs
<!doctype html> <!-- ng-app使用范围HTML --> <html lang="en" ng-app="test"> <head> <meta <meta charset=" " set="UTF-8"> <title>Document</title> <style type="text/css" media="screen"> #div1 input {background: #CCC;} #div1 input.active {background: yellow;} #div1 div {width: 200px;height: 200px;border: 1px solid #000;} </style> <script src="angular.min.js"></script> <script type="text/javascript"> var app=angular.module('test', []) app.controller('cont1', function($scope){ $scope.now=0 $scope.arr=[ {name:'TV',content:'PANDA'}, {name:'music',content:'JAY'}, {name:'sport',content:'CHINA'} ] $scope.fn=function(n){ $scope.now=n } }) </script> <style type="text/css" media="screen"> </style> </head> <body> <div id="div1" ng-controller="cont1"> <!-- ng-click与ng-repeat不能直接引用,须要经过函数使用 --> <input ng-repeat="(key, value) in arr" type="button" value="`value`.`name`" class="{{now==$index?'active':''}}" ng-click="fn($index)"> <div ng-repeat="(key, value) in arr" ng-show="now==$index"> `value`.`content` </div> </div> </body> </html>
七、$interval
<!doctype html> <!-- ng-app使用范围HTML --> <html lang="en" ng-app="test"> <head> <meta <meta charset=" " set="UTF-8"> <title>Document</title> <style type="text/css" media="screen"> #div1 input {background: #CCC;} #div1 input.active {background: yellow;} #div1 div {width: 200px;height: 200px;border: 1px solid #000;} </style> <script src="angular.min.js"></script> <script type="text/javascript"> var app=angular.module('test', []) app.controller('cont1', function($scope,$interval){ $scope.a=0 var timer=$interval(function(){ $scope.a++ if ($scope.a==100) { $interval.cancel(timer) } },50) }) </script> <style type="text/css" media="screen"> </style> </head> <body ng-controller="cont1"> `a` </body> </html>
八、$watch
<!doctype html> <!-- ng-app使用范围HTML --> <html lang="en" ng-app="test"> <head> <meta <meta charset=" " set="UTF-8"> <title>Document</title> <style type="text/css" media="screen"> #div1 input {background: #CCC;} #div1 input.active {background: yellow;} #div1 div {width: 200px;height: 200px;border: 1px solid #000;} </style> <script src="angular.min.js"></script> <script type="text/javascript"> var app=angular.module('test', []) app.controller('cont1', function($scope,$http){ $scope.str='' $scope.arr=[] $scope.$watch('str',function () { $http.jsonp('https://s.taobao.com/search', {params:{ q:$scope.str, cb:'JSON_CALLBACK' }}).success(function (json) { alert(json.q) }).error(function () { alert('fail') }) }) }) </script> <style type="text/css" media="screen"> </style> </head> <body ng-controller="cont1"> <input type="text" ng-model="str"> <ul> <li ng-repeat="s in arr">`s`</li> </ul> </body> </html>
九、$scope
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="angular.min.js"></script> <script type="text/javascript"> var app=angular.module('test', []) //controller实际上为JavaScript函数,主要做用 //一、能够提供模型的初始值,与ng-init做用相同 //二、添加UI的函数 app.controller('HelloCtrl', ['$scope', function ($scope) { //$scope能够加入与模板相关的数据和方法 $scope.name="AnjularJs" $scope.getName=function(){ return $scope.name } }]) </script> </head> <body ng-app="test"> <div ng-controller="HelloCtrl"> <!-- ng-model其实是普通的JavaScript对象,可使用当前存在的全部JavaScript类和对象; 前提,只须要将对象指派给$scope,AngularJs就能够确认它存在 --> say hello to,<input type="text" ng-model="name"><br> <!-- $scope能够有效的操做View --> <h1>hello,{{getName()}}!</h1> </div> </body> </html>
十、深刻理解$scope做用域
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="angular.min.js"></script> <script type="text/javascript"> var app=angular.module('test', []) app.controller('WorldCtrl', ['$scope', function ($scope) { $scope.population=60 $scope.countries=[ {name:'China',population:12}, {name:'USA',population:1.1} ] }]) </script> </head> <body ng-app="test"> <ul ng-controller="WorldCtrl"> <!-- 不一样的DOM元素指向不一样的做用域,并使用各自做用域中的变量渲染模板,因此不会形成命名冲突 ; 在例子中,<li>元素都有独自的做用域,分别定义各自的country变量 --> <li ng-repeat="c in countries"> `c`.`name` has population of `c`.`population` </li> <hr> World's population : `population` billions </ul> </body> </html>
十一、{{}} 等同于 ng_bind
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="angular.min.js"></script> <script> var app=angular.module('', []) $scope.name="AngularJs" </script> </head> <body ng-app=""> please input your name:<input type="text" ng-model="name"><br> <div ng-bind="name"></div> `name` </body> </html>