zoukankan      html  css  js  c++  java
  • liteUploader上传控件的封装使用

     
    //原来的绑定方式 
    $('#' + frm_name).liteUploader({ script: url, params: { type: "image", size: size }, singleFileUploads: false }).on("lu:success", function (e, response) { var json = JSON.parse(response); return function (res) { json; }; }).on('lu:error', function (e, response) { var json = JSON.parse(response); }); $('#' + frm_name).change(function () { $(this).data("liteUploader").startUpload(); });

    liteUploader插件兼容性比较好,而且很小巧,相对于某些控件可能依赖flash或者需要绑定表单,不过通常图片上传都在一个大的form做提交验证,导致form的嵌套,这时表单提交的上传插件就不使用了。

    好在,liteuploader支持这个,单绑定上传的input就够了

    按插件原生绑定方式,change需要独立写,而且事件等都用on链式操作(这点还可以接受)。导致插件不是整体的形式,分离了。

    下面是封装写法

    //使用liteUploader插件
    cj.PostImagesFile = function (options) {
        this.setting = {
            url: '/api/Files/PostFile',
            size: '200_100',
            id: 'browseLogo',
            startUpload: function () {
            },
            success: function () {
            },
            error: function () {
            }
        };
        $.extend(this.setting, options);
        this.init();
    };
    
    cj.PostImagesFile.prototype = {
        constructor: cj.PostImagesFile,
        init: function () {
            var _this = this;
            var $obj = $('#' + this.setting.id);
            $obj.liteUploader({
                script: this.setting.url,
                params: {
                    type: "image"
                },
                singleFileUploads: false
            }).on("lu:success", function (e, response) {
                var json = JSON.parse(response);
                _this.setting.success(json);
            }).on('lu:error', function (e, response) {
                var json = JSON.parse(response);
                _this.setting.error(json);
            });
    
            $obj.change(function () {
                $obj.data("liteUploader").startUpload();
            });
        }
    };

    在原生链上,写了个init初始方法,新建对象时,会自动调用init方法,最后把on的事件,调用构造器success,error等返回结果给对外使用。

    cj.PostImagesFile =
                new cj.PostImagesFile({
                    url: '/api/Files/PostFile',
                    size: '200_100',
                    id: 'browseLogo',
                    startUpload: function () {
                    },
                    success: function (res) {
                        console.info(res);
                        vm_new.logo(res.data[0]);
                    },
                    error: function (res) {
                    }
                });

    只写了success的返回,其他方式同理。 vm_new是ko(knockout)的绑定方式

    PS:这个异步不能用Promise,Promise方式resolve只能执行一次,当出现第二次上传同一个控件时,resolve就不可以执行了。

    效果图

  • 相关阅读:
    单链表的反转
    .tar.xz压缩文件的解压
    leetcode Excel Sheet Column Number python
    leetcode Excel Sheet Column Title python
    leetcode Largest Number python
    leetcode Majority Element python
    leetcode Word Break python
    sed命令导致rc.local软链接失效
    Steam内存测试工具
    Ceph pg_num计算
  • 原文地址:https://www.cnblogs.com/drek_blog/p/10788554.html
Copyright © 2011-2022 走看看