Angular:
框架: 对程序员的限制高
库: jquery,bootstrap —— 使用灵活,对程序员的限制少
它是MVC框架 精确定义是MVVM框架 mv*
SPA (single page application) 移动端
MVC:
M: Model 模型——数据
V: View 视图
C: Controller 控制器
MVC 分离:
1.数据、逻辑、 表现层代码的分离
2.分工
**学好:它最核心的核心的东西就是数据
以前写JS:存在大量的重复劳动
window 事件 .....
Angular:避免了重复劳动,让程序员更加关注需求的本质和实现。
版本:
官网:https://angularjs.org/
混乱:
1.2 以下
1.3 以上 上课
2.x 没人用 angular2
3.x 消失
4.x 即将要出来
基本用法:
Angular指令:
以 ng 开头。
是否需要服务器环境——最好
oninput是input值改变的时候触发
1、ng-app
angular管辖的范围
2、ng-model
数据,数据模型—— 数据从哪来
3、ng-bind
数据绑定 —— 数据到哪去
MVC:
M: model 模型,数据——现在的例子中: 输入框
V: view 视图 ——现在的例子中: div
C:
Angular特性:
1).双向绑定
ng-bind: 不好 一开始清空内容
*Angular——接管了 UI
*Angular——扩展了html
4、表达式{{a}}
*Angular 和 原生的JS——不互通(事件、函数),可以解决。
5、ng-click
事件: ng-mouseover ....
* 只关注数据
6、ng-init
数据初始化
7、ng-repeat 循环
循环数组:
ng-repeat="item in arr"
{{item}} —— 数组中的每一项
循环JSON:
ng-repeat="(key,value) in json"
{{key}} —— json中的key
{{value}} —— json中的value
ng-repeat:
数组:
(key,value) in arr
key—— 索引
value —— 每一项
json:
(key,value) in json
key 键名
value 键值
8、数组的索引: $index 获取本元素的索引
*在数组里,默认情况下不允许出现重复的数字 如果有重复的会报错
track by 重新指定数组中的key
以前:(key,value) in arr
现在:item in arr track by $index
9、过滤器 filter
currency : 货币的filter
参数: currency:'¥'
date:
date:'yyyy MM dd HH(hh) mm ss'
放 | 后面
总结:
ng-app
ng-model
ng-bind
{{}}
ng-repeat
ng-click
ng-init
$index
item in arr track by $index
currency
yyyy年MM月dd日 HH(hh) mm ss
10、ng-show ng-hide
Angular:
1、和原生的JS 是不互通 —— 可以得解决
2、和传统的开发方式完全不同——只要盯住数据,数据是核心
不互通:
1)函数不互通
Number 示例
2)变量不互通
全局变量示例
3)事件不互通
MVC—— C
控制器: Controller
1)定义模块
angular.module(模块名,所依赖的其它模块);
let mod = angular.module('mod1',[]);
2)引用模块
ng-app="模块名"
3)定义Controller
mod.controller('控制器名',回调函数($scope){
//控制器的代码
});
4)引用controller
ng-controller="ctr1"
*所有的数据都放在$scope
$scope : 依赖项
Angular:
1)双向绑定
2)依赖注入
Controller:
1)放代码
2)原生和angular之间的桥梁 —— 在controller中可以使用原生代码
*一个页面中,可以有多个模块
*在一个模块中,可以有多个控制器
*为什么不互通:因为angular的东西都在$scope身上。
总结:
mvc
ng-app
ng-model
ng-bind
ng-init
ng-repeat
ng-click
ng-hide
ng-show
{{}}
$index
filter
track by
ng-controller
angular.module('app',[])
.controller('ctrl',($scope)=>{
})