2016-06-21 5 views
1

ページ内に複数のアップローダインスタンスがあります。私は、私のケース(6から8までのアップローダ)で多くのコードがあるので、アップローダのすべてのインスタンスに対して、素晴らしいアップローダスクリプトとテンプレートを繰り返す/複製したくありません。私は、次のしているマルチインスタンスの詳細なアップローダコードを再利用する

$('#fine-uploader-manual-trigger-section1').fineUploaderS3({ 
    template: 'qq-template-manual-trigger-section1', 
    autoUpload: false, 
    debug: true, 
    request: { 
     endpoint: $("#s3_url").val(), 
     accessKey: $("#access_key").val(),  
    }, 
}); 
$('#fine-uploader-manual-trigger-section2').fineUploaderS3({ 
    template: 'qq-template-manual-trigger-section2', 
    autoUpload: false, 
    debug: true, 
    request: { 
     endpoint: $("#s3_url").val(), 
     accessKey: $("#access_key").val(),  
    }, 
}); 
....... 
up to 6-8; as you can template code also repeat. 

私の目標は、再利用のスクリプトとアプローチの下に使用した可能性がテンプレートです。私はいくつかのアドバイスや解決策が必要な方向性が必要です。確かに、私はコードの重複を避けようとしています。

$('#fine-uploader-manual-trigger-section1').createUploader('section1'); 
$('#fine-uploader-manual-trigger-section2').createUploader('section2'); 

function createUploader(section) { 
    return new fineUploaderS3({ 
    template: 'qq-template-manual-trigger'+section, 
    autoUpload: false, 
    debug: true, 
    request: { 
     endpoint: $("#s3_url").val(), 
     accessKey: $("#access_key").val(),  
    }, 
    }); 
} 

私の質問は、どのように.fineUploaderS3をインスタンス化し、$('#fine-uploader-manual-trigger-section1')にそれを添付するには?上記のアプローチはJQueryバージョンで可能ですか?ここで

+0

最初のステップは、jQueryプラグインラッパーの使用を中止することです。しかし、最も重要なことは、あなたの質問は明確ではなく、具体的に何をしようとしているのか分かりません。 –

+0

ハム...私はjQueryのバージョンが通常よりも優れていると思っていました。私の変化がどれほど大きいかわからない!とにかくあなたの質問に答えるために、私はページ内に6-8人のアップローダを持っており、それぞれはS3の特定のサブフォルダにアップロードされます。ほとんどの場合、各アップローダの唯一の変更は特定のサブフォルダです。インスタンスごとにアップローダコードとテンプレートを重複する代わりに、パラメータとしてサブフォルダを渡して1つの詳細アップローダスクリプトとテンプレートを呼び出すことで、6-8インスタンスを作成できるようにしたいと考えています。 – bizready

+0

実際には8人の別々のアップローダのインスタンスが必要ですか?それぞれが別の要素に取り付けられていますか? –

答えて

0

あなたは/さまざまなエンドポイントおよびテンプレートワットのユニークな要素にアタッチファインアップローダS3インスタンスのセットを作成するために呼び出すことができます関数です。

function createUploader(uploaderInfo) { 
    return new qq.s3.FineUploader({ 
     element: document.querySelector(uploaderInfo.elementSelector), 
     template: document.querySelector(uploaderInfo.templateSelector), 
     request: { 
     endpoint: uploaderInfo.endpoint 
     } 
    }) 
} 

を...そしてあなたは、このように、この関数を呼び出すことができます:

[ 
    { 
     elementSelector: '#element1', 
     templateSelector: '#template1', 
     endpoint: 'endpoint/1' 
    }, 
    { 
     elementSelector: '#element2', 
     templateSelector: '#template2', 
     endpoint: 'endpoint/2' 
    } 
    ... 
].forEach(function(uploaderInfo) { 
    createUploader(uploaderInfo) 
}) 

これは一般的な考えです。もちろん、必要に応じてコードを変更することもできます。アップローダインスタンスをトラッキングする必要がある場合は、forEachループの内部でも実行できます。

+0

素晴らしいアイレイとありがとう!私はこのスレッドを試して更新します。 – bizready

+1

私はレイの方向に基づいて私のソリューションを実装しており、それは非常にスムーズに行った。もちろん、私は特定のカスタマイズをたくさんしなければならなかったので、ここでコードを追加すると便利ではないかもしれません。具体的な例についての彼の素晴らしいサポートのためにRayにもう一度感謝します。 – bizready

関連する問題