angularjs结合plupload实现文件上传
2016-03-24 16:32
645 查看
正常的plupload用法应该是这样的
var uploader = new plupload.Uploader({ runtimes : 'html5,flash,silverlight,html4', browse_button : 'pickfiles', url : "/examples/upload", }); uploader.init();
而在Angular里面,直接这么写,似乎不太优美,也不符合封装成组件的要求。 那么我们就给plupload做成angular的指令(web组件)。
这里需要注意的是,不要将初始化操作放到Controller里面,否则它可能出错,很多封装其他插件成angular组件时,就是因为初始化顺序问题,导致各种报错。controller的执行在link之前。
var app = angular.module('plupload', []); /** * 文件上传指令 * @return {[type]} [description] */ app.directive('plupload', ['$timeout', function($timeout) { return { restrict: 'A', // E = Element, A = Attribute, C = Class, M = Comment link: function($scope, iElm, iAttrs, controller) { var uploader = new plupload.Uploader({ runtimes: 'html5,flash,silverlight,html4', browse_button: 'uploadfile', url: 'upload.php', multi_selection: false, filters: { max_file_size: '10mb', mime_types: [{ title: "Image files", extensions: "jpg,gif,png" }, { title: "Zip files", extensions: "zip" }] }, flash_swf_url: '/plupload/Moxie.swf', silverlight_xap_url: '/plupload/Moxie.xap', init: { FilesAdded: function(up, files) { uploader.start(); }, UploadComplete: function(up, files) { } } }); uploader.init(); } }; }]);
这样上传插件就算封装完成了。使用的时候,就先引入模块文件,然后引入模块
var app = angular.module('app', [ 'plupload' ]);
使用的时候像下面这样。
<button class="btn btn-primary btn-sm" id="uploadfile" plupload>本地上传</button>
如果在 模块app的作用域下, plupload指令就会生效了。
上面代码是从项目里面拿出来修改的,没有经过测验。方便借鉴,如果有什么疑问,联系:(fermi)294052929@qq.com
相关文章推荐
- angularJS controller 控制器获取控制父级标签
- ionic准备之angular基础——继承(3)
- Angular.js如何从PHP读取后台数据
- angularjs 总结
- Angular.js如何从PHP读取后台数据
- AngularJS简介
- AngularJS过滤器
- AngularJS基础语法
- AngularJS 服务(Service)
- [angularjs] angularjs系列笔记(五)Service
- 【AngularJS】——核心特性之路由
- Angular中实现树形结构视图
- 通过angularjs的directive以及service来实现的列表页加载排序分页(转)
- MVC route 和 Angular router 单页面的一些方式
- 通过angularjs的directive以及service来实现的列表页加载排序分页
- Angularjs和bootstrap、jquery和easyUI的各自主要功能
- AngularJs路由:ngRoute
- angular中的Controller使用注意点
- AngularJS 让人爱不释手的八种功能
- angular实例