Angular基础总结
一、使用Angular
1.引入`angualrjs`
2.定义`ng-app`告诉`angualrjs`那些代码要被`angualrjs`解析
3. `ng-model`  表示把`input`输入的值赋值给 `username`
4.`{{}}`  绑定数据
二、控制器
- 1.通过ng-app定义myApp模块 告诉angularjs这里面的代码要被angularjs解析
- 2.得通过 - angular.module('myApp',[])实现
 两个参数:- 1.模块名称
- 2.依赖注入的让他模块
 - 4.定义控制器 - view ng-controller
 5.定义控制器以后要实现这个控制器
| 1 | app.controller('firstController',function($scope){ | 
$scope视图和控制器的桥梁,所有的数据都要绑定到$scope 所有的方法也要绑定到$scope
三、view和控制器的桥梁
1.$rootScope  全局作用域  可以数据和方法  (多个控制器共享数据)
 2.$scope   局部作用域
四、$apply
AngularJS外部的控制器(DOM事件、外部的回调函数如jQuery 事件等)调用了AngularJS函数之后,必须调用$apply。
     在这种情况下,你需要命令AngularJS刷新自已(模型、视图等),$apply就是用来做这件事情的。
     angularjs外部的事件 或者方法 改变$scope绑定的数据的时候,改变不了,这时候就要用到$apply
五、内置定时器
- 1.$timeout
- 2.$interval六、数据
- 1.数据绑定- ng-model='name',- ,可以将- $scope的数据绑定到视图
 
- 2.ng-reapet循环(track by $index出现相同值的时候需要绑定index)
- 3.ng-bind-html,数据绑定<element ng-bind-html="expression"></element>
- 4.数字绑定 - ng-init,不常见建议用- ng-bind- 1 
 2
 3- <div ng-app="" ng-init="quantity=1;cost=5"> 
 <p>总价: {{ quantity * cost }}</p>
 </div>
- 5. - ng-bind- 七、- $watch- $watch用于监听每个- scope中的变量
- 1. - $watch单一的变量- 1 
 2
 3
 4- $scope.count=1; 
 $scope.$watch('count',function(){
 ...
 });
- 2. - $watch多个变量用- +号隔开- 1 
 2
 3
 4
 5
 6- //当count或page变化时,都会执行这个匿名函数 
 $scope.count=1;
 $scope.page=1;
 $scope.$watch('count + page',function(){
 ...
 });
- 3. - $watch页可以监听数组或者对象- 1 
 2
 3
 4
 5- $scope.items=[ 
 {a:1},
 {a:2}
 {a:3}];
 $scope.$watch('items',function(){...},true);
八、$http请求
1.get请求(post同理)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21var url="http://www.phonegap100.com/appapi.php";
            $http.get(url,{
                params:{
                    'a':'getPortalList',
                    'catid':20,
                    "x":'xxx'
                }
            }).then(function(res){
                console.log(res.data.result);
                $scope.list=res.data.result;
            },function(err){
                console.log(err);
            })
2.jsonp请求
| 1 | var url='http://www.phonegap100.com/appapi.php?a=getPortalArticle&aid=109&callback=JSON_CALLBACK' | 
3.jsonp1.6.2的版本
| 1 | var url='http://www.phonegap100.com/appapi.php?a=getPortalArticle&aid=109&callback=JSON_CALLBACK' | 
九、代码压缩的问题
第二个参数写数组可以完美解决
| 1 | app.controller('secondController',['$scope','$http',function($scope,$http){ | 
十、模块依赖ngSanitize.js(html代码解析模块)
1.引入  angular-sanitize.js
2.依赖注入ngSanitize
3.ng-bind-html 绑定数据
| 1 | var app=angular.module('myApp',['ngSanitize']); | 
十一、angular的路由配置
1.引入js  angular-route.min.js
2.在html页面中定义  ng-view  显示我们模板里面动态加载的数据
3.var app=angular.module('myApp',['ngRoute']);   依赖注入
    //根据不同的路由加载不同的控制器和模板
    //加载出来的模板和控制回头放在视图里面
| 1 | app.config(function($routeProvider){ | 
5.注意:要实现路由里面定义的controller
十二、angular的广播
- $scope $rootScope上面都可以绑定广播
- $broadcast给子- controller广播数据
- $emit给 父亲- controller广播数据
- $scope.$on 接收数据 ('名称',function(event,data){})
- $scope.$broadcast('to-child', '给child数据');//前面是名字 后面是数据 数据可以是 字符串 也可以是数组 和对象
- $scope.$broadcast('to-parent', '给父亲元素广播数据')- 十三、- angular的动画- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37- <script src="http://cdn.bootcss.com/angular.js/1.2.9/angular-animate.min.js"></script> 
 <script>
 var m1 = angular.module('myApp',['ngAnimate']);
 m1.controller('firstController',['$scope',function($scope){
 $scope.bBtn = true;
 }]);
 m1.animation('.box',function(){
 return{
 enter:function(element,done){
 console.log(element);
 console.log(done);
 $(element).css({width:0,height:0});
 // / $(element).animate({width:0,height:0});
 $(element).animate({width:200,height:200},1000,done);
 },
 leave:function(element,done){
 $(element).animate({width:0,height:0},1000,done);
 }
 }
 });
 </script>
 </head>
 <body>
 <div ng-controller="firstController">
 <input type="checkbox" ng-model="bBtn">
 <div ng-if="bBtn" class="box"></div>
 </div>
