new Promise((resolve,reject)=>{
$.ajax({
url:'',
success(r){
resolve(r)
},
error(r){
reject(r)
}
})
}).then((r)=>{
console.log(r)
},(r)=>{
console.log(r)
})
Promise.all([
$.ajax('a.txt'),
$.ajax('b.txt'),
$.ajax('c.txt')
]).then((arr)=>{
console.log(arr)
},(r)=>{
console.log(r)
})
Promise.race([
$.ajax('a.txt'),
$.ajax('b.txt'),
$.ajax('c.txt')
]).then((r)=>{
console.log(r)
},(r)=>{
console.log(r)
})
Promise.all([
$http('a.txt'),
$http('b.txt'),
$http('c.txt')
]).then((arr)=>{
console.log(arr)
},(r)=>{
console.log(r)
})
$q.all([
$http('a.txt'),
$http('b.txt'),
$http('c.txt')
]).then((arr)=>{
console.log(arr)
},(r)=>{
console.log(r)
})
$interval
$apply
$.get
.post
.getJson
=========================================================
一、模块化
Angular中的模块化 —— 比较弱
let mod = angular.module('mod',[]);
例1:
1) 在一个新的JS文件里定义了一个模块
let mod1 = angular.module('mod1',[]);
mod1.controller('mod1_ctr1',($scope)=>{
$scope.a = 200;
});
2)在我的html文件中,自身的模块依赖于以上定义的模块: mod1
3)在html文件中,可以同时使用自己的controlloer和模块中的controller:mod1_ctr1
二、依赖注入
把决定权交给消费者。
函数参数:由调用者来决定 —— 被动的地位
function show(a,b){
alert(arguments.length);
}
Angular:函数的拯救者
let mod = .....;
mod.controller('ctr1',($scope,$q)=>{
$scope.a=12;
});
想用谁,就把谁注入到函数。
三、过滤器
系统的过滤器: date currency
time|date:'yyyy-MM-dd'
price|currency —— $
|currency:'¥' —— ¥
要求:
给定一个数字,显示一下是中文的星期几。
let n = 3;
{{n|cnDay}} —— 星期三
自定义过滤器:
angular.module('app',[])
.filter('cnDay',function(){
return function(input){
//input 就是要处理的输入的数据
//输入的数据——要对谁使用这个过滤器
//对input进行处理
return '返回值——就是最终要使用的内容';
};
});
四、自定义指令
指令: ng-bind ng-model....
以ng-开头的都是系统提供的指令
自定义一个指令:hehe-haha
angular.module('myapp',[])
.directive('heheHaha',()=>{
return {
template:'<span>欢迎你</span>'
};
})
指令名称:
驼峰命名法: 第一个字母小写,以后每个单词首字母大写
限制选项:restrict —— 默认值 A E
restrict:字符串
A: Attribute 属性
E: Element 元素
C: Class 类,样式中的class
M: coMment 注释 : 需要配合 replace:true
***M的时候 两边要留空格
自定义指令中常用的几个选项:
template: 输出的模板
restrict: 限制、约束
ECMA
replace: 默认是false,
设置true,替换原有的标签