PLUpload 不适用于 Extj 5

PLUpload not working with Extj 5

请找到针对 Extjs 4 和 5 的 PLUpload 的小提琴

Fiddle with Extjs 4 [WORKING]

    http://jsfiddle.net/jaspreets/dvsbsgse/

Fiddle with Extjs 5 [NOT WORKING]

    http://jsfiddle.net/jaspreets/797sLzsn/

请告诉我为什么它不适用于 ExtJs-5。 可能的解决方案是什么?

提前致谢。

您需要迁移 PLUpload 插件。为此,您需要对插件进行一些更改。

Button.js:

/**
* @class Ext.ux.upload.Button
* @extends Ext.button.Button
*
* @author Harald Hanek (c) 2011-2012
* @license http://harrydeluxe.mit-license.org
*/
Ext.define('Ext.util.multiupload.Button', {
  extend: 'Ext.button.Button',
  alias: 'widget.uploadbutton',
  requires: ['Ext.util.multiupload.Basic'],
  disabled: true,

  listeners: {
    boxready: function() {
        var me = this;
        Ext.applyIf(me.config.uploader, {
            browse_button: me.config.id || me.getId()
        });

        me.uploader = me.createUploader();
        me.uploader.initialize();
        me.plugins[0].initializeComponent(me);

        me.relayEvents(me.uploader, ['beforestart',
            'uploadready',
            'uploadstarted',
            'uploadcomplete',
            'uploaderror',
            'filesadded',
            'beforeupload',
            'fileuploaded',
            'updateprogress',
            'uploadprogress',
            'storeempty'
        ]);
    }
},

/**
 * @private
 */
createUploader: function() {
    return Ext.create('Ext.util.multiupload.Basic', this, Ext.applyIf({
        listeners: {}
    }, this.initialConfig));
}
});

Basic.js: 删除添加事件。将商店更改为此。

me.store = Ext.create('Ext.data.JsonStore', {
        fields: ['id', 'loaded', 'name', 'size', 'percent', 'status', 'msg'],
        listeners: {
            load: me.onStoreLoad,
            remove: me.onStoreRemove,
            update: me.onStoreUpdate,
            scope: me
        }
    });

onStoreRemove方法的第二个参数是一个数组。所以取第一个元素。

Window.js: 删除 ID "form-statusbar"。将 init 函数重命名为 initializeComponent.

现在应该可以使用了。