0

アップロードできる画像を 6 つだけ許可したいので、これが私のコードです。

    jQuery('#jquery-wrapped-fine-uploader').fineUploader({          
    request: {
        endpoint: '<?php echo $this->getUrl('shop/functions/submitUploadProductImage') ?>'
    },
     validation: {      
        itemLimit:6
    }
}).on('complete', function(event, id, fileName, responseJSON) {
    if (responseJSON.success) {

        jQuery("#images-container").append(
            '<div class="productImgContainer border-img">' +
                '<img id="productImg'+id+'" class="productImgBig" data-image="'+responseJSON.uploadName+'" data-extension="'+responseJSON.extension+'"  src="'+path+'/'+ responseJSON.uploadName +'">'+
                '<a class="deleteImage newImage" delete-id="'+id+'"></a>'+
            '</div>'
        );

        var nbImagesProd = jQuery(this).fineUploader('getNetUploads', id);          
        if (nbImagesProd == 6) {                
            jQuery(".addButton").hide();
        }       
    }
}); 

ご覧のとおり、on.complete 関数を介して getNetUploads を取得できます。6 つの画像がアップロードされている場合は、ボタンを非表示にします。これはうまくいきます。

しかし、私はカスタム削除機能を使用します(ファインアップローダーからではありません):

    jQuery(document).on('click', '.deleteImage', function(){    
      //I want to decrease the fineUploader _netUploaded so I can uploaded a new file
})

に新しい関数を設定しようとしていますfineupload.js:

setNetUploads: function() {
   this._netUploaded--;
}

しかし、完全なコールバック以外では呼び出すことができませんgetFunction

_netUploadedでは、コールバックの外で変数を変更するにはどうすればよいですか?

4

1 に答える 1

0

コードと質問を見ると、どのような問題が発生しているのかまだ明確ではありません。itemLimit検証が期待どおりに機能するように、ネット アップロードを追跡する内部変数をデクリメントする独自の API メソッドを追加しようとしていることがわかります。Fine Uploader のソースを変更する必要がある場合、API メソッドを追加して、他の API メソッドを呼び出すのと同じように呼び出さない理由がよくわかりません。次のように新しい API メソッドを呼び出すことができます。

$('#jquery-wrapped-fine-uploader').fineUploader('setNetUploads');

組み込みのファイル削除機能を使用して、サーバー側で DELETE リクエストを処理することをお勧めします。ライブラリをよく理解していない状態で Fine Uploader のコードを変更することは、特に将来的に最終的に Fine Uploader の新しいバージョンにアップグレードする場合には、おそらくお勧めできません。オプションで、ファイル削除機能が POST 要求を使用できるようにするオープンケースが既にあります。詳細については、ケース#801を参照してください。

于 2013-05-01T15:34:52.203 に答える