之前由于项目需要,决定使用angularjs做前端开发,在前两个项目中都有文件上传的功能,因为是刚接触angularjs,所以对一些模块和模块间的依赖不是很了解。都是由其他大神搭好框架,我只做些简单的填充。

现在拿出些时间来研究一下。主要针对一些插件的用法,现总结一下(以file upload 为例):

angular file upload.js 的第一行是

var angularFileUpload = angular.module('angularFileUpload', []);

这里他定义了一个angular模块,名称是angularFileUpload,不依赖其他模块;

接下来

angularFileUpload.service('$upload', ['$http', '$timeout', function($http, $timeout) {...})

在这个模块上创建了一个服务,名称是$upload,依赖'$http', '$timeout'两个内置模块(方法函数);

在这个模块的内部使用directive,创建了一些指令方法:

angularFileUpload.directive('ngFileSelect',[])//选择
angularFileUpload.directive('ngFileDrop',[]);//拖放
等方法,具体还没有研究过; 分析完这个插件,接下来就是使用该插件了; 首先引入angularjs库文件和相应插件
<script type="text/javascript" src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
<script src="http://apps.bdimg.com/libs/angular-file-upload/1.3.1/angular-file-upload.min.js"></script>

下面demo

<body ng-app="appName">
<div ng-controller="ctrlName">
<div class="container">
<input type="file" ng-file-select="onFileSelect($files)" multiple accept="image/*">
</div>
</div>

关键是js的控制

//注入angularjs 模块和服务
var app = angular.module('appName', ['angularFileUpload']);//创建并添加依赖(upload模块名称)
app.controller('ctrlName',[ '$scope', '$upload', function($scope, $upload) {//$upload是依赖的upload模块的服务名称module.service("$upload",[]);
  //这里可以调用依赖的(upload)模块里提供的方法
$scope.onFileSelect = function($files) { //$files:是已选文件的名称、大小和类型的数组
for (var i = 0; i < $files.length; i++) {
var file = $files[i];
console.log(file);
/*文件上传函数*/
$scope.upload = $upload.upload({
url: 'server/upload/url', //上传的url
//method: 'POST' or 'PUT',
//headers: {'header-key': 'header-value'},
//withCredentials: true,
data: {myObj: $scope.myModelObj},
file: file, // or list of files ($files) for html5 only
//fileName: 'doc.jpg' or ['1.jpg', '2.jpg', ...] // to modify the name of the file(s)
// customize file formData name ('Content-Disposition'), server side file variable name.
//fileFormDataName: myFile, //or a list of names for multiple files (html5). Default is 'file'
// customize how data is added to formData. See #40#issuecomment-28612000 for sample code
//formDataAppender: function(formData, key, val){}
}).progress(function(evt) {//上传进度 console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total)); }).success(function(data, status, headers, config) {
// 文件上传成功处理函数
console.log(data); }).error(function(data, status, headers, config) {
//失败处理函数
console.log('上传失败');
});
};
};
}]);

其他angularjs 插件的使用方法,应该和这个差不多,自己是个小菜,正在研究,欢迎大神指正;

写的不是很清楚,后续在总结;

最新文章

  1. 《UML大战需求分析》阅读随笔(四)
  2. understanding-论文
  3. CountUp.js – 让数字以非常有趣的动画方式显示
  4. 视图组件(View)
  5. php:mysqli扩展
  6. WCF学习心得------(七)消息协定
  7. Delphi中有序型
  8. 匹配一级分类和二级分类 名字和url 里面有玄机
  9. Android:控件的对象修改控件的值
  10. win7无法识别U盘,驱动信息:该设备的驱动程序未被安装。 (代码 28)
  11. Spring、struts、webwork2三者MVC的比较
  12. POJ 2991 Crane
  13. spring框架应用系列三:切面编程(带参数)
  14. java8 list转map
  15. SMS PDU编码数据串格式分析
  16. 如何使用油猴脚本不要vip就能观看各大视频网站如腾讯,爱奇艺等的vip视频
  17. MyEclipse 8.6 下载
  18. zabbix_agent YUM源配置
  19. html网页中不能复制网站文字
  20. js里获取页面高度和文档高度

热门文章

  1. listView的异步加载数据
  2. Spigot 算法之中的一个 计算调和级数的和
  3. JavaScript跨浏览器事件处理
  4. 编写一个基于HBase的MR程序,结果遇到一个错:ERROR security.UserGroupInformation - PriviledgedActionException as ,求帮助
  5. 小图拼接大图MATLAB实现
  6. ps -ef 和 aux 区别
  7. Office365client通过本地方式批量部署(即点即用部署)
  8. 关于IIS上Yii2的Url路由美化
  9. 【BZOJ4269】再见Xor 高斯消元
  10. 九度OJ 1198:a+b (大数运算)