Angular01

Angular简介

  • AngularJS是一款由Google公司开发维护的前端MVC框架,其克服了HTML在构建应用上的诸多不足,从而降低了开发成本提升了开发效率。

  • AngularJS与我们之前学习的jQuery是有一定的区别的,jQuery更准确来说只一个类库(类库指的是一系列函数的集合)以DOM做为驱动(核心),而AngularJS则一个框架(诸多类库的集合)以数据和逻辑做为驱动(核心)。框架对开发的流程和模式做了约束,开发者遵照约束进行开发,更注重的实际的业务逻辑。

  • AngularJS特性核心的是:

    • 模块化。每个模块的代码独立拥有自己的作用域,model,controller

    • 双向数据绑定。view层的数据和model层的数据是双向绑定的,其中之一发生更改,另一方会随之变化,这不用你写任何代码

    • 语义化标签。可以将很多功能封装成HTML的标签,属性,这大大美化了HTML的结构,增强了可阅读性.

    • 依赖注入。将这种后端语言的设计模式赋予前端代码,这意味着前端的代码可以提高重用性和灵活性,未来的模式可能将大量操作放在客户端,服务端只提供数据来源和其他客户端无法完成的操作.

  • jquery与angular的区别

    • jquery与angular能共存,jquery是一个类库,而angular是类库的集合
    • jquery是以dom为驱动,angular是以数据为驱动

依赖:依赖:大多数面向对象编程语言,在调用一个类的时候,先要实例化这个类,生成一个对象。如果你在写一个类,过程中要调用到很多其它类,甚至这里的其它类,也要“依赖”于更多其它的类。这就是依赖的意思。

依赖注入:全称是“依赖注入到容器”, 容器(IOC容器)是一个设计模式,它也是个对象,你把某个类(不管有多少依赖关系)放入这个容器中,可以“解析”出这个类的实例。所以依赖注入就是把有依赖关系的类放入容器(IOC容器)中,然后解析出这个类的实例。

MVC简介

MVC是一种开发模式,指的是 Model View Controller;由模型(model),视图(view),控制器(controller)三部分组成。

  • V-View,视图层,一般是我们的html文件层,用于展示数据内容。
  • C-Controller,控制器,控制器帮助将模型(Model)层数据给视图层(view),或者当视图(View)层数据有所改变时,通知模型层(Model),模型层(Model)数据也做相应的改变。
  • M-Model,模型,当我们需要使用到数据的时候,数据暂存在这里。如var str="hello",或者从数据库中取出数据之后,将数据赋给一个对象或者变量,都可以理解为数据模型。

MVC运行机制

  • 视图需要数据,把需要的数据发送给控制器
  • 控制器去找模型要数据
  • 模型处理数据,将处理好的数据返回给控制器
  • 控制器将处理好的数据返回给视图

AngularJS创建模块

模块:AngularJS是以模块化的方式组织的,将整个应用划分成若干个模块,每个模块都有其特定功能,再利用某种方式将模块组织起来形成一个整体。

模块使用
先引入angular.js文件

  1. 创建模块
    AngularJS中提供了一个全局对象angular,其中使用angular.module()方法定义一个模块
var app=angular.module('app',[]);
  • 第一个参数:模块名称,第二个参数:依赖的模块
  1. 创建控制器
    控制器作为视图与模型之间的桥梁,当控制器创建完成之后,同时也获取了模型,默认为$scope
app.controller('xmgController', ['$scope', function ($scope) {
   $scope.msg = '描述信息';   
}])
  • 第一个参数:模控制器块名称,第二个参数:依赖的服务,再注入服务
  1. 绑定模块 ng-app=模块名称
    通过添加属性ng-app绑定模块,模块绑定的位置代表着angular在当前页面支持范围

  • 一个页面可以绑定多个模块,但是模块之间不可以嵌套
  • 通常一个html中只对应一个模块
  1. 绑定控制器

{{msg}}

  • 一个模块内可以有多个控制器,控制器可嵌套

代码示例


    
    







{{msg}}


Angular指令

指令:给原生的html添加一些新的属性,达到想要的效果(也就是angular自定义的一些属性和标签,都是以ng-为前缀)

  1. 常用内置指令:
  • ng-app 指定应用模块,至少有一个
  • ng-controller 指定控制器
  • ng-show 控制器元素是否显示, true显示、false不显示
  • ng-hide 控制元素是否隐藏,true隐藏、false不隐藏
  • ng-if 控制元素是否“存在”,true存在、false不存在
  • ng-src 增强图片路径
  • ng-href 增强地址
  • ng-class 控制类名
  • ng-include 引入模板
  • ng-disabled 表单禁用
  • ng-readonly 表单只读
  • ng-checked 单/复选框表单选中
  • ng-selected 下拉框表单选中
  • ng-bind 获取属性的值插入到当前标签中(单向数据绑定包括插值语法与ng-bind属性)

代码示例


{{name}}

{{msg2}}

SKv5876666

注意:
01 ng-src,增强图片路径。当在img标签中使用src属性来加载路径,图片会加载,但是会报错。
原因:与angular执行机制有关,当执行代码的时候,会先执行html文件,当执行到img标签时,读取属性src的路径无法识别,会报错,html执行完,回头执行angular时,读取到路径{{url}},图片展示;
解决:使用ng-src时,执行html文件时就无法识别,执行到angular时才会识别,不会报错


![]({{url}})

面试题:
02 数据绑定:使用插值语法绑定数据,会造成闪烁情况。
原因:与img标签情况类似,也是先执行htm文件时,当做普通文本执行,会先出现普通文本的样式,再执行angular时,又会出现其他文本样式;
解决:给当前标签添加属性ng-cloak,在通过属性选择器设置样式display:none;解析html文件时,会进行样式设置为none,解析angular文件时会设置ng-cloak为显示

  

/*单向绑定方式:
1.插值语法 {{}}  {{name}}    会闪烁 可以绑定多个属性
2.ng-bind                          不会闪烁, 只能绑定一个属性
3.ng-bind-template          不会闪烁,可以绑定多个属性 格式: {{}} 以插值的     方式添加
*/
  

{{name}}-{{msg}}

-->
  1. 事件指令:
    事件处理:ng-click=‘处理方法’,ng-mousedown....


  1. ng-repeat与ng-switch指令

  //1.创建模块
  var app = angular.module('app', []);
  //2.创建控制器
  app.controller('xmgController',['$scope', function($scope){
      $scope.type = 'js';
      $scope.course = ['html', 'css', 'js'];
  }]);

  //3.绑定模块
  //4.绑定控制器

  var value = 'js';
  switch (value){
      case  'html':
          alert('html');
          break;
      case  'css':
          alert('css');
          break;
      case  'js':
          alert('js');
          break;
      default:
          alert('没有匹配到')
  }

  
  • {{value}}

ng-repeat指令,循环遍历,ng-repeat="value in course" ,course:代表需要遍历的对象,value:代表遍历对象的值;

  1. 数据双向绑定
    双向绑定:模型数据可以绑定到视图上,视图将数据展示到界面;视图数据可以绑定到模型上(MVVM)(注:只要想获取文本框的内容,input,textarea,section.....等,立马想到数据绑定)
    指令:ng-model




{{name}}

tab切换实例




    
    Title
    



  • 前端学院
  • iOS学院
  • java学院
  • UI精品学院
![](images/01.png)
![](images/02.png)
![](images/03.png)
![](images/04.png)

备忘录实例




    
    Title
    
    
    

    
    
    




![](images/Top.jpg)
  • 待办事项
  • 已完成事项
  • {{obj.name}} 删除 详情
  • {{obj.name}} 删除 详情

你可能感兴趣的:(Angular01)