angular-file-upload使用笔记

引入

github
Bower:

1
2
bower install ng-file-upload-shim --save(for non html5 suppport)
bower install ng-file-upload --save

构建表单

1
2
3
4
5
6
7
8
<form name='test'>
<div class="btn btn-default " ngf-select ng-model="upload_img"
name="upload_img" ngf-pattern="'image/*'" ngf-accept="'image/*'"
ngf-max-size="2MB" ngf-min-height="100">Select
</div>
<button ng-click='submitForm(upload_img)'>
</button>
</form>

在文档中看见,可以用input,button,div等方式来构建,但是我推荐用Button,因为可以自己设置样式.

使用

其中div标签必须的是 ngf-select与ng-model和name这三个属性.其他的都是可选性,如果你上传的是图片,你可以用ngf-thumbnail来预览.
并且可以在ngf-thumbnail中嵌入其他数据
比如

1
<img ngf-thumbnail="upload_img||user_info.avatarUrl" class="" alt="" width="100" height="100"/>

如何在controller获取到

推荐在提交的时候传递参数,这里我已经躺了一个坑了,官方加了一个$号,我这里用$upload_img没用

1
2
3
4
5
6
<button ng-click='submitForm(upload_img)'>
</button>
$scope.submitForm=function(upload_img){
console.log(upload_img)
}

JavaScript深入浅出-作用域

全局.函数,eval

1
2
3
4
5
6
7
8
9
10
11
var a=10;//全局作用域
(function(){
var b=20;
})();
console.log(a);//10
console.log(b);//error, b is not defined
for(var item in {a:1,b:2}){
console.log(item)
}
console.log(item)// item still in scope
eval('var a=1; ');

JavaScript无块级作用域,只有函数作用域.
如 匿名立即执行作用域

JavaScript深入浅出-this

this跟作用域并没有什么关系,this指向的是调用者!
自己已经踏入这个坑好多次了…总是以为this跟作用域有关系.

全局的this(浏览器)

1
2
3
4
console.log(this)//window
console.log(this===window)//true
this.a=37;
console.log(window.a)//37

一般函数的this(浏览器)

1
2
3
4
5
6
7
8
9
10
function f1(){
return this
}
f1()===window//true,global object
---
function f2(){
'use strict';
return this
}
f2()===undefined;//true

JavaScript深入浅出-闭包

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function outer(){
var localVal=30;
return localVal;
}
outer()//30
---
function outer(){
var localVal=30;
return function(){
return localVal;
}
}
var func=outer();
func();//30;
---
for(var i=0;i<4;i++){
setTimeout(function(){
alert(i)// all are 4!
},500)
}
---
for(var i=0;i<4;i++){
(function(i){
setTimeout(function(){
alert(i)//随机1-4出现 因为异步的关系,但是并不是4
},1000)
})(i)
}

一次有意思的JavaScript试验题

今天群里的朋友发了一段代码,问最后的结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var a=1;
var b={
a:2,
b:function(){
alert(this.a);
}(),
f:this.f=function(){
alert(this.a);
}
};
function f(){
alert(3);
}
f();
b.f();
(b.f)();
(0, b.f)();

在浏览器中运行的结果是1,1,2,2,1
跟我自己脑补的不一样…可能是技术还不够吧…于是在浏览器中运行并且分析了下.

丝毫不懂 如何转职做一名程序猿

不写汤文,就随便侃侃。
丝毫不懂指的是 英语未入门,数学未入门,电脑未入门。 符合其中的两点就可以称作丝毫不懂了。
即使这样也不能阻挡你想要编程,转职程序猿的心是吗?如果是那么可以继续往下看,不是就可以右上角x了。
首先我需要告诉你,编程分很多种,编程中职业也分很多种,每一种职业又分很多方向。举个例子 Android开发-java iOS开发-swift web开发-js 数据库维护与开发-SQL/noSQL 服务器后端-php/java/c#… 桌面应用-c++/vb.. Linux开发-bash shell gtk.. 单机片-汇编 这里仅仅列出了一点点 IT行业无奇不有,那么你到底想学什么?连个感兴趣的目标都没有如何谈学习。如果你在上述中找到你感兴趣,那么就可以往下看了,没有那么你就得好好反思下,我是对编程感兴趣还是只是我的一时兴起罢了。
当你选定一个方向了,甚至连编程需要的都没看。 恭喜你,你已经跨入程序猿的大门,你已经符合了一个最基本的要求-兴趣。