我怎样才能调用onComplete函数的作用域

时间:2013-08-15 12:00:53

标签: fine-uploader

我为FineUploaderBasic类创建了一个包装器,以便将它与我现有的系统连接起来,当调用onComplete函数时,它在FineUploaderBasic元素的范围内调用,而不是父元素。

如何更改此内容或访问FineUploaderBasic实例的父级?

我已经使用ExtJs编写代码作为Follow's,我试图在FineUploader上传完成后触发我自己的上传完成事件。但是,在FineUploader实例的范围内调用了“onUploadComplete”函数,我无法访问自己的对象。

Ext.define('X4.Core.FileUploader', {

mixins: {
    observable: 'Ext.util.Observable'
},

uploader: null,

constructor: function (config) {

    this.initConfig(config);

    this.mixins.observable.constructor.call(this, config);

    this.addEvents({
        /**
        * Event which is triggered once the file upload has been completed successfully.
        *
        * @since X4 4.1.1
        */
        "uploadcomplete": true
    });

    return this;
},

getUploader: function () {

    var me = this;

    if (me.uploader === null) {
        me.uploader = new qq.FineUploaderBasic({
            autoUpload: false,
            request: {
                endpoint: '/_system/x4/commands/file_uploader.ashx'
            },
            callbacks: {
                onComplete: me.onUploadComplete
            }
        });
    }

    return me.uploader;

},

onUploadComplete: function(id, name, response) {

    var me = this;

    alert('upload complete ' + id + ' ' + name + ' ' + response);

    me.fireEvent('uploadcomplete', me.callbackScope, id, name, response);

},

addFile: function (fileInput) {

    var me = this;

    return me.getUploader().addFiles(fileInput.extractFileInput());

},

upload: function () {

    var me = this;

    me.getUploader().uploadStoredFiles();

}

});

1 个答案:

答案 0 :(得分:0)

由于您没有提供有关您的问题的任何具体信息,我将不得不提供一个非常通用的答案。此外,既然你没有指定你是否使用jQuery插件,我将不得不假设你不是。

所以,你的问题的答案实际上与Fine Uploader无关。假设您使用的是无依赖版本,Fine Uploader将对每个回调/事件处理程序的调用上下文设置为关联的Fine Uploader实例。您要求的是“parent”元素,表面上是您为element选项指定的值的父元素。

您可以通过节点的parentNode属性确定任何元素/节点的父节点。