天天看点

AngularJS入门笔记Angular学习笔记AngularJS

Angular学习笔记

AngularJS

下载方式

使用nodejs下载,npm install angular

什么是AngularJS

Google开源的前端JS结构化框架
AngularJs特性和优点
- 双向数据绑定
	- 声明式依赖注入
	- 解耦应用逻辑,数据模型和视图
	- 完善的页面指令
	- 定制表单验证
	- Ajax封装
           
与Jquery的比较
  • Jquery:JS函数库 封装简化dom操作
  • angular:JS结构化框架 主题不再是DOM,而是页面中的动态数据
AngularJS能做什么项目
  • 构建单页面(SPA)Web应用或者web App应用

    单页面应用(SAP):Single page application

    特点:

    ​ 1、将所有的活动局限于一个页面

    ​ 2、当页面中有部分数据发生了变化不会去刷新整个页面

    ​ 3、利用Ajax技术,路由。

    • 应用

ng-app指令

ng-app:告诉angular核心他管理当前标签所包含的整个区域,并且会自动创建$rootscope根作用域对象

双向数据绑定

数据可以根据view流向model,也可以从model流向view

ng-model是双向数据绑定,而{{}}是数据绑定

ng-init:初始化当前作用域变量

三个重要对象

1、作用域与控制器对象

  • 作用域对象

    一个JS实例对象,ng-app指令会默认创建一个根作用域对象$scope,他的属性和方法与页面中的指令或表达式是关联的

  • 控制器对象

    用来控制iAngularJs应用数据,实例对象

    ng-controller:指定控制器构造函数,Angular会自动new此函数创建控制器对象

    同时Angular还有一个新的作用于对象 s c o p e , 它 是 scope,它是 scope,它是rootscope的子对象

    在控制器函数中声明 s c o p e 形 参 , A n g u l a r 会 自 动 将 scope形参,Angular会自动将 scope形参,Angular会自动将scope传入

2、模块和控制器

依赖注入

依赖对象:完成某个特定的功能徐涛某个对象才能实现,这个对象就是依赖对象。
  • 依赖注入:依赖的某个对象以形参的形式被注入进来使用,这种方式就是声明式依赖注入。
  • angular的’$scope‘对象就是依赖对象,并且是依赖注入的形式进行使用
  • 回调函数的event就是依赖对象
  • 回调函数有形参就是依赖注入
开发的两种方式
  • 命令式

    更加注重的是执行过程

  • 声明式

    更加注重的执行的结果

    声明式是命令式的局部包装

    创建模块化对象

    生成作用域对象

    myModule.controller('MyController',function($scope){
        $scope.empName = 'kobe'
    })
    myModule.controller('MyController2',function($scope){
        $scope.empName = 'wade'
    })
    //优化  链式调用
    angular.model('myApp'[])
        .controller('MyController',function($scope){$scope.empName = 'kobe';//隐式声明依赖注入
        }).myModule.controller('MyController2',function($scope){
            $scope.empName = 'wade'
        })
    
    //以上的代码有问题:
    //JS代码压缩后形参会用abcd字母代替
    //代码压缩的$scope会被abcd代替,angular无法解析
    //解决方案
    angular.module('myApp',[])
    	.controller('MyController',['$scope',function($scope){//显示声明依赖注入
            $scope.empName = 'kobe';
        }])
    	.controller('MyController2',['$scope',function('$scope'){
            $scope.empName = 'wade';
        }])
               

angularJs表达式

  • 使用Angular表达式:

    语法:{{expression}}

    作用:显示表达式的结果数据

    注意:表达式中引用的变量必须是当前与对象有的属性(包含其原型属性)

  • 操作的数据

    基本类型数据:number/string/boolean

    undefind,Infinity,NaN,null,解析为空串:"",不显示任何效果

    对象的属性或方法

    数组

常用指令

  • Angular指令:Angular为HTML页面扩展的,自定义标签属性或标签
  • 与Angular的作用域对象(scope)交互,扩展页面的动态表现力
常用指令一
ng-app:指定模块名,angular管理的区域

ng-model:双向绑定,输入相关标签

ng-init:初始化数据

ng-click:调用作用域对象的方法(点击时)

ng-controller:指定控制器构造函数名,内部会自动创建一个新的子作用域(外部的)

ng-bind:解决使用{{}}显示数据闪屏(在很短时间内显示{{}})

ng-repeat:便利数组显示数据,数组有几个元素就会产生几个新的作用域

$index,$first,$last,$middle,$odd,$even
           
<div>
    	<h2>人员信息列表</h2>    
    	<ul>
    		<li ng-repeat="person in persons">
    		{{$index}}--{{person.username}}
    		</li>
    	</ul>
    </div>
           
ng-show:不二类型,如果为true才显示

ng-hide:不二类型,如果为true就隐藏
           
常用指令二
ng-class:动态引用定义的样式{aClass:true,bClass:false}

ng-style:冬天引用通过js指定的样式对象{color:'red',background:'blue'}

ng-click:点击监听,值为函数调用,可以传$event

ng-mouseenter:鼠标移入监听,值为函数调用,可以传$event

ng-mouseleave:鼠标移出监听,值为函数调用,可以传$event