如何在任何javascript或jquery类

时间:2018-03-15 08:33:51

标签: javascript jquery dropzone.js

我有这个上传图片的功能。

    MyImages.instance.on('sending', function(file, xhr, formData) {

        // support
        if ($.inArray(file.type, ['image/png','image/jpg','image/jpeg','image/gif']) != -1) {

            var storage = firebase.storage();
            var storageRef = storage.ref('' + file.name);
            var uploadTask = storageRef.put(file);
            uploadTask.on('state_changed', function(snapshot) {
            }, function(error) {
            console.log('Error Uploaded');
            }, function() {
            var downloadURL = uploadTask.snapshot.downloadURL;
            console.log('Uploaded a blob or file! ' + downloadURL);
            });
            var getImageUrl = function(file){
                var returnVal;
            storageRef.getDownloadURL().then(function(url){
                returnVal = url;
            });
                return returnVal;
            };
            console.log('return value ' + getImageUrl);
            formData.append('image', file);
        }

    });

然后我创建了这个函数来知道图像是否上传成功

MyImages.instance.on('success', function(file, response) {

    //support
    if (response.data && response.data.link) {

        if (response.status != 200 && response.data.error) {
            MyImages.notification(response.data.error);
        }

        file.external_link = response.data.link;

        // Add the message to the textarea
        MyImages.text.add('[img]' + file.external_link + '[/img]');
        console.log(file.external_link);
        if (response.data.deletehash) {
            file.deletehash = response.data.deletehash;
        }

        MyImages.notification(MyImages.lang.uploaded_to_firebase);

        return;

    }

});

我正在使用dropzone.js,我想问的是如何获取此代码

file.external_link

相同
returnVal

或如何在其他功能中使用 returnVal ,这样就能一次又一次地使用

1 个答案:

答案 0 :(得分:0)

要使用“file.external_link”,最好在函数内部使用回调来“成功”。

e.g。

MyImages.instance.on('success', function(file, response) {

    //...
    // when your function is in this context
    this.handeFilePath(file.external_link);

    return;

}.bind(this)); // add this context to function scope to call handeFilePath()

甚至可以更好地处理自定义回调中的所有成功处理。 例如

MyImages.instance.on('success', handeFilePathOrSomethingOther);

var handeFilePathOrSomethingOther = function(file, response) {
    // your stuff           
};