前端学习(三十七)angular(笔记)
MVC 后台
M Module 数据层
V View 视图层
C Controller 控制层
前端开始用MVC
M 数据层 交互
V 视图层 DOM操作
C 控制层 逻辑
===================================================
不用原生写MVC
1.不是所有人都懂MVC,用人需求变高。
2.风格不统一
===================================================
库和框架的区别?
库 辅助程序员开发 JQuery
框架 限制程序员开发 Angular
===================================================
AngularJS
MVVM的框架
Angular火。有人在推,Google
用的人少了,自己作。更新。
主版本.次版本.修订号
1.2.x
玩法直接变了
1.3.x
javascript
2.x
TypeScript
本质还是MVC,只不过衍生出很多叫法
MVC
MVVM
MVP
MV*
=====================================================
面向过程
面向对象
面向数据
致力于解决所有交互所带来的痛苦。
只需要关心数据就行。
=======================================================
官网:https://angularjs.org/
下载:https://code.angularjs.org/
文档:https://code.angularjs.org/1.5.8/docs/api
=======================================================
Function Angular提供的方法
angular.bind 矫正this
angular.bootstrap 开启angular应用
angular.copy 复制对象
angular.element 小jquery
angular.equals 比较是否相等
angular.forEach 迭代
angular.fromJson
angular.isArray 检测是否是数组
angular.module angular模块
===================================================
玩的就是数据——数据就是一切
ng-app 哪是angular管的
一个页面只能加一个
ng-model 数据源
ng-bind 数据绑定
ng-bind平时用的少。
用:{{}}
angular的核心:
依赖注入、双向绑定
===================================================
Directive 指令
ng-app
ng-model
ng-bind
ng-init 初始化
ng-click 点击
ng-repeat 迭代
{{$index}} 索引
{{$first}} 是否是第一行
{{$last}} 是否是最后一样
{{$even}} 是否是奇数行
{{$odd}} 是否是偶数行
数组有重复会有问题:
原因:默认把值当成索引了。
解决:
ng-repeat="item in arr track by $index"
ng-show 显示
ng-hide 隐藏
ng-if 如果是真的就显示,否则就已隐藏
ng-controller 控制器
环境:
原生环境
NG环境
================================================
Controller 控制器
let app = angular.module('名字',[依赖]);
app.controller('控制名字',($scope)=>{
$scope 当前控制器的域
});
==================================================
Filter 过滤器
{{item.price|currency}}
currency 货币
{{item.price|currency:'¥'}}
date 日期
filter 过滤器
limitTo 限制数量
number 1004354548
================================================
Angular的问题
数据变了,但是DOM没有渲染
解决:
脏检查
==============================================
Service 服务
$interval 定时器
$timeout 定时器
==============================================
交互
$http服务
GET
$http.get('url',{
params:{
参数
}
}).then((res)=>{
res.data 数据
},(err)=>{
});
POST
$http({
method:'POST',
url:'',
data:{
参数
},
headers:{
'Content-Type':'application/x-www-form-urlencoded'
},
transformRequest:function(data){
var arr = [];
for(var key in data){
arr.push(key+'='+data[key]);
}
return arr.join('&');
}
}).then((res)=>{
res.data 数据
},(err)=>{
});
---------------------------------------------------
Angular
优势是做SPA
spa 单页应用
==================================================
controller 通信
父子级通信
子级给父级发送数据
发送
$scope.$emit('名字',值);
父级给子级发送数据
发送
$scope.$broadcast('名字',值);
接收
$scope.$on('名字',function(ev,data){
data
});
===============================================
jsonp
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su
================================================
filter 过滤器
自定义过滤器
app.filter('过滤器名字',function(){
return function(input){
操作input的值。
return 值;
};
});
capitalizes 首字母大写
getCnDay 获取中文星期
trim 去除首尾空格
==================================================
自定义指令
directive
app.directive('名字',function(){
return {
link:function(scope,ele,attr){
}
};
});
===================================================
深入Controller
传统写法不能压缩,因为angular核心是依赖注入
app.controller('main',['$scope','$http',function(scope,http){
}]);
controller的另一种写法
var app = angular.module('app',[],function($controllerProvider){
$controllerProvider.register('控制器名字',function($scope){
});
});
filter的另一种写法
var app = angular.module('app',[],function($controllerProvider,$filterProvider){
$filterProvider.register('名字',function(){
return function(input,param){
};
});
$controllerProvider.register('控制器名字',function($scope){
});
});
directive另一种写法
var app = angular.module('app',[],function($controllerProvider,$filterProvider,$compileProvider){
$compileProvider.directive('名字',function(){
return {
link(scope,ele,attr){
}
};
});
$filterProvider.register('名字',function(){
return function(input,param){
};
});
$controllerProvider.register('控制器名字',function($scope){
});
});
==============================================
前端学习(三十七)angular(笔记)的更多相关文章
- 前端学习:JS(面向对象)代码笔记
前端学习:JS(面向对象)代码笔记 前端学习:JS面向对象知识学习(图解) 创建类和对象 创建对象方式1调用Object函数 <body> </body> <script ...
- 前端学习(十七):JavaScript常用对象
进击のpython ***** 前端学习--JavaScript常用对象 JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等 在JavaScript中,对象是拥有属性和方法的数据 ...
- Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类
一.多环境配置 在工作中,对于开发环境.测试环境.生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配 ...
- 前端学习(三十八)vue(笔记)
Angular+Vue+React Vue性能最好,Vue最轻=======================================================Angular ...
- 前端学习(三十六)promise(笔记)
一个页面: 头部.用户信息.新闻列表 jquery ajax: 1.$.ajax({ url:'', dataType:'json', }).then(res=>{ //r ...
- 前端学习(三十九)移动端app(笔记)
移动端App 开发App的三种方式 Native App 原生 底层语言 java Android oc ...
- 前端学习(三十五)模块化es6(笔记)
RequireJs:一.安装.下载 官网: requirejs.org Npm: npm i requirejs二.使用 以前的开发方式的问题: 1).js 是阻塞加 ...
- 前端学习(三十四)对象&模块化(笔记)
人,工人 //类的定义 function Person(name,age){ //构造函数 //工厂模式 //1.原料 //var obj = new ...
- 前端学习(三)css选择器(笔记)
字体样式: color:red: font-size:12px: font-weight:bold/normal; font-style:italic/normal; f ...
随机推荐
- JavaWeb(四):JDBC
数据持久化(persistence) 把数据保存到可掉电式存储设备中以供之后使用. 大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各 ...
- JavaWeb(八):Filter和Listener
一.Filter 1.1 概述 Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能.在 Servlet ...
- 51nod 1028 大数乘法 V2 【FFT模板题】
题目链接 模板题.. #include<bits/stdc++.h> using namespace std; typedef int LL; typedef double db; nam ...
- Redis之数据类型
一.概念: Redis:一个开源.支持网络.基于内存.键值对存储数据库. 特点:它可以支持多种数据类型. 二.数据类型 1)Redis String 具体说明: 一般的普通的k到v一个映射是Strin ...
- B/S大文件断点续传
一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...
- CentOS 7.5 通过kubeadm部署k8s-1.15.0
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...
- iOS设计模式之桥接模式
一,什么是桥接模式 定义 抽象出层次结构.上层抽象接口的职能,实现上层抽象接口的职能,层级间的通信协议(可以抽象为接口).桥接模式的目的,就是把抽象层次结构从具体的实现中分离出来,使其能够独立变更.抽 ...
- Drawer实现侧边栏布局
在 Scaffold 组件里面传入 drawer 参数可以定义左侧边栏,传入 endDrawer 可以定义右侧边栏.侧边栏默认是隐藏的,我们可以通过手指滑动显示侧边栏,也可以通过点击按钮显示侧边栏. ...
- Unregistering JMX-exposed beans on shutdown解决方法:
Unregistering JMX-exposed beans on shutdown解决方法: 加入依赖如下: <dependency> <groupId>org.spr ...
- C# get和set
Day1:知识点 1.封装 自己的理解: 可复用,低耦合.就是拿过来就用 只需要关注名称,返回值,参数及参数类型,不需要知道里面怎么实现的. 字段封装的快捷键 (ctrl+r+e) 将光标放在将要封 ...