angularjs

angular支持的运算

逻辑运算
比较运算
三目运算
调用字符串对象的成员方法
使用直接变量表示法创建对象
使用数组
(不可以)new var
(不可以)调用全局es

javascript对象中的分类

1)ECMAScript标准对象 Global String Data RegExp Array Object
可以在任何一个js解析器中使用
2)宿主对象
DOM: node element attribute
bom: window document
只能在浏览器中的js解释器中使用 不能在独立的服务器端js解释器(如NodeJS)中使用
3)用户自定义对象

angular指令

ng-app
ng-init
ng-bind
ng-controller
ng-repeat
ng-if

angular声明Model数据

1)使用Controller对象创建Model数据
ngApp -> Module -> Controller ->Model
1)声明ngApp
2)创建自定义模块 angular.module(‘myModule’,[ng]);
3)在应用中注册自定义模块: ng-app=”模块名”
4)在模块中声明controller
5)在view中指定controller对象的作用范围
6)在controller中声明model

Angular四大特征

1)MVC模型
Model 模型业务数据 (商品,订单 核心数据 从数据库来)
(前端应用中就是保存在JS变量,保存在特定范围内的模型变量)
View 视图 业务数据的呈现(前端应用中HTML)
Controller 控制器业务数据的获取删除修改(前端应用中function)

model:业务数据($scope,$rootScope.xx)
view:业务数据呈现 html+ngXXX
control:操作业务数据 .controller(“”,function(){})

2)双向数据绑定
方向1:Model绑定到View 只要Model变View随着变
方向2:View(表单控件)绑定到Model 只要View变 Model随着变
(最大的缺陷是)原生js dom只有特定事件的监听机制 没有监听数据/对象/值改变的机制

3)依赖注入
如何解决依赖关系:
1.主动创建方式
var c1 = new Car(); //主动创建依赖对象
var d1 = new Driver(c1); //传递依赖对象
2.被动注入(Injection)方式
module.controller(‘控制器’,function($scope,$interval){})
angular中的ngController指令在实例化控制器对象时 会根据指定的形参名
创建出控制器所依赖的对象 并注入给控制器对象-依赖注入现象
(如果使用yui压缩 会导致形参传递失败)
(解决:
....controller(‘myCtrl’,[‘$interval’,’$scope’,’$timeout’,function($interval,$scope,$timeout){
}])
可以被注入的对象:
1.$rootScope
2.$interval
3.$timeout
4.$log
5.$http
6.$location

)
4)模块化(Module)设计-体现 “高聚合低耦合”

Angular与jQuery关系

jquery操作思路:先找元素 再操作元素 $(…)
AngularJS操作思路:创建业务数据 绑定数据 维护数据
Angular已经把dom操作封装了

angular在加载时

判断 是否有jquery.js 如果存在用当前jq操作dom
不存在 会使用自定义的精简版本jqLite-只有核心jQuery方法

MVC模型

1)在一个Angular应用中可以声明多个模块
2)某个模块可以依赖于其他模块
3)有一个模块必须注册给ngApp指令 - 启动模块
4)一个模块中可以声明多种组件
1.controller
2.directive
3.service
4.filter
5.....
5)$scope表示当前控制器对象的有效范围/作用域
声明在某个$scope中的模型数据 一般情况下不能被其他控制器使用
想在多个控制器间共享/传递数据 可以在根作用域中–$rootScope每个Angular应用(ngApp)只有一个
唯一的$rootScope对象
控制器的本质用途 用于划分一个大型页面中的不同的div块 每个这样的块中都有自己专用的数据 以及可以
和其他块共享的数据

双向数据绑定

1)方向1:Model绑定到View 此后不论何时只要Model发生变化 View会同时更新
实现方法:{{}} ngBind ngIf ngRepeat ngShow ngChecked 等等几乎所有的现实数据指令都实现了
方向1的绑定
2)方向2:View绑定到Model 把视图中用户可以修改的HTML元素-即表单控件的值
绑定到一个Model变量上 此后 不论何时只要用户修改了表单控件的值
后台模型变量的值就会随之改变
实现方法:ngModel
为了监视Model变量是否真的改变 可以使用$scope.$watch()函数对Model数据进行监视
-单行文本输入域 ngModel可以把value属性绑定到Model变量
-复选框 ngModel可以把true/false 值绑定到Model变量
-单选框 ngModel可以把当前选中的单选框的value值绑定到Model变量
-下拉框 ngModel可以把当前选中的option的value值绑定到Model变量

4.ng模块提供的service组件

1.$rootScope 用于在所有的控件器间共享数据
2.$interval 周期性定时器服务
3.$timeout 一次性定时器服务
4.$log 提供5个基本的日志输出服务
5.$http 提供异步Http请求(AJAX服务)
$http.get() $http.post() $http.put() $http.delete()
resful
用法:$http({method:’GET’,url:’/xx.php’}).
success(fn).
error(fn)
简化版用法 $http.get(‘url’).success(fn);
$http.get(‘url’).success(fn);

5.ng模块提供的directive组件

1.ngApp
2.ngInit
3.ngBind
4.ngIf
5.ngRepeat
6.ngClick
7.ngMouseOver
8.ngSrc 为img标签指定src属性 可以防止404
9.ngShow 若赋值为true 则display:block 否则display:none
10.ngHide 若赋值为true 则display:none 否则display:block

6.ng模块提供的过滤器

Filter:把Model数据在显示时以某种特定的格式呈现
1.lowercase
{{表达式|lowercase}}
2.uppercase
3.number
4.currency
5.date

7.单页页面与多页页面

多页应用 单页应用(spa)
项目中有多个完整的HTML页面 项目中只有一个完整的HTML页面(其他都是html片段)
使用超链接,js实现跳转 使用超链接,伪js
所有的页面请求都是同步的-客户端等待服务器响应时浏览器一片空白 所有的“伪页面请求”都是异步请求-客户端在等待下一个页面片段到时,仍可以显示前一个页面内容
不便于实现两个页面间切换过场动画 很容易实现两个伪页面间的过场切换动画
浏览器需要不停的创建(删除)完整的dom树 浏览器只需要创建一个完整的dom树 此后的伪页面切换只是在换某个div中的内容
每个页面需要加载自己的css和js文件 整个项目的css和js文件只需要加载一次

手动实现 单页面应用的步骤
1)创建一个完整的html页面 引入所需的所有css和js body中只需要一个伪页面的容器元素

 

2)创建若干个伪html页面/模板页面 只需要声明html片段
3)客户端请求完整的html页面 同时url中再追加一个特殊的标记
如index.html#/start-指定要加载的伪页面的名称
4)浏览器解析出的伪页面名称 查找一个字典 找到该名称对应的模板页面的url
window.location.hash

/start => template/main.html

/m => template/main.html

5)客户端发起异步ajax请求 获取模板页面的内容
加载到index.html的伪页面容器中

index.html 路由地址 模板页面

 

8.ngRoute

route: 路由 通过某条路径找到目标内容
ngRoute: 根据浏览器中url的特殊地址标记(形如#/xxx)
查找到该标记对应的模板页面 异步加载到当前页面的ngView指令中
1.创建一个完整的html页面 其中声明一个容器 ngView指令 引入angular.js和angular-route
2.创建多个模板页面(习惯上放在一个特别的目录下 如tpl)
3.创建Module 声明依赖于ng和ngRoute两个模块
4.在Module中配置路由字典
5.在浏览器中测试
http://IP地址/index.html#/路由地址

6.ng-view跳转
超链接
js location.href=”#/路由地址”

$scope.jump = function(){
//不能使用多页面跳转
$location.url(‘#/路由地址’)
}

angular知识点总结的更多相关文章

  1. angular知识点(2)

    angular知识点(2) 1.为了代码规范,对于需要自动加载的依赖,需要在前面加上注释,注释为://@ngInject 或者是/*@ngInject*/ 2.ngSwitch的应用 在需要用到选择出 ...

  2. 今天get到的两个angular知识点

    angular 控制器$scope依赖注入的正确写法 <div ng-controller="ctrl"> {{name}} {{age}} <div ng-co ...

  3. Angular知识点

    Angular CLI 快速创建Angular 2项目和组件, 压缩打包发布. 7.创建包含html.ts.css文件的命令cd到需要创建文件的目录下面,输入如下命令 ng g c myFile 会自 ...

  4. Angular知识点复习

    Angular第三方UI组件库(github搜“awesome angular ")-----lonic 概述:是一个第三方的适用于移动端App的UI组件库,可以与Angular/React ...

  5. Angular之简单的登录注册

    使用Angular实现了一个简单的登录注册的功能........ 涉及到的Angular知识点很少 主要是这个功能的实现...(*^__^*) 嘻嘻…… 里面涉及到的知识点记录: 1.本地存储的操作 ...

  6. AngularJs 动态加载模块和依赖

    最近项目比较忙额,白天要上班,晚上回来还需要做Angular知识点的ppt给同事,毕竟年底要辞职了,项目的后续开发还是需要有人接手的,所以就占用了晚上学习的时间.本来一直不打算写这些第三方插件的学习笔 ...

  7. 推荐10个很棒的AngularJS学习指南

    AngularJS 是非常棒的JS框架,能够创建功能强大,动态功能的Web app.AngularJS自2009发布以来,已经广泛应用于Web 开发中.但是对想要学习Angular JS 的人而言,只 ...

  8. 十个非常棒的学习angularjs的英文网站

    AngularJS 是非常棒的JS框架,能够创建功能强大,动态功能的Web app.AngularJS自2009发布以来,已经广泛应用于Web 开发中.但是对想要学习Angular JS 的人而言,只 ...

  9. angular表单知识点

    原文 https://www.jianshu.com/p/c772d143e1fc 大纲 1.对表单的理解 2.模板驱动表单(Template Driven Forms) 3.响应式表单(Reacti ...

随机推荐

  1. linux指令 apt-grt指令使用

    apt-get 是linux的一条指令,主流的linux版本Debian和ubuntu都使用apt-get来安装软件.那么,需安装的软件都放在哪里呢??? apt-get 利用软件安装源来安装软件,其 ...

  2. xargs 命令使用小记

    ls -1|xargs -t -i mv {} noncredit{}  注意: ls -1 是123的1,不是lmn的l

  3. java基础知识(14)---API

    API:(Application Programming Interface,编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理 ...

  4. Changing Controller Numbers in Solaris

    If you need to change the controller numbers (c#) that a disk has assigned to it, whether it is for ...

  5. oracle——基础知识(二)未完

    1.select 查询 单独的一条 select 语句 可以一次查询多条记录:但是在 pl/sql 块中,select语句只能 使用INTO子句:必须并且只能返回一行 2.EXECUTE IMMEDI ...

  6. CALayer的基本使用

    CALayer需要导入这个框架:#import <QuartzCore/QuartzCore.h> 一.CALayer常用属性 属性 说明 是否支持隐式动画 anchorPoint 和中心 ...

  7. 百度地图SDK v2.1.2使用方法

    1.开发工具 Android开发工具有很多,开发者可根据自己的喜好进行选择.在此,我们推荐开发者使用Eclipse作为自己的开发工具,本套开发指南也是针对Eclipse开发环境下进行编写的. 2.工程 ...

  8. MyBatis中动态SQL语句完成多条件查询

    一看这标题,我都感觉到是mybatis在动态SQL语句中的多条件查询是多么的强大,不仅让我们用SQL语句完成了对数据库的操作:还通过一些条件选择语句让我们SQL的多条件.动态查询更加容易.简洁.直观. ...

  9. python 爬虫 下载图片

    import os#导入操作系统模块from urllib.request import urlretrieve#下载url对应的文件from urllib.request import urlope ...

  10. cocos2d-x坐标系详解

    cocos2d-x官方文档 笛卡尔坐标系 不同坐标系简介 笛卡尔坐标系 你可能上学的时候就已经知道“笛卡尔坐标系”了,它在几何课本里经常用到.如果你已经忘得差不多了,下面这些图片可以很快唤起你的记忆: ...