2016-05-28 4 views
-1

私はコールバックのグローバル関数を必要とするAPIを使っています。クラスをインスタンス化してデータを渡すときに、一意のグローバル関数を定義しますか?

コールバックをクラス内で定義します。これは、同じページで複数回インスタンス化することができます。 callbackFunnctonは、関数を参照

SubmitForm = function(el) { 
    this.el = $(el); 
}; 

SubmitForm.prototype.api = function(){ 
    grecaptcha.render(this.el,{ 
    'sitekey' : '6Lfk4SATAAAAAMsKUioOBFfgcLr_tERuvbsr3pun', 
    'callback': callbackFunction 
    }); 
}; 

window.callbackFunction

私は、クラスのインスタンスごとに一意のグローバルコールバック関数を作成し、また、その機能に this.elを渡すことができますどのように

私はおそらく関数に乱数を命名するようなことを考えていますが、何とかその関数にthis.elを渡すことができるかどうかはわかりません。

SubmitForm = function(el) { 
    this.el = $(el); 
    this.rand = Math.random(); 
}; 

SubmitForm.prototype.api = function(){ 
    grecaptcha.render(this.el,{ 
    'sitekey' : '6Lfk4SATAAAAAMsKUioOBFfgcLr_tERuvbsr3pun', 
    'callback': callbackFunction 
    }); 
}; 

window[this.rand] = function(this.el){ 
    ... 
} 
+1

あなたの例では、コールバックがグローバルでなければならないという印象はありません。また、Google Recaptchaの場合は、そうである必要はありません。何がグローバルになる必要があると思いますか? –

答えて

0

あなたはインスタンス

SubmitForm.instanceCount 

すべての新しいインスタンスをカウントアップどこ

window.myCallbackFunctions = new Object(); 

のようなすべての機能が、あなたのクラスにあなたを静的変数を追加し保持するオブジェクトを作成することができます新しいコールバック機能を割り当てる

window.myCallbackFunctions[SubmitForm.instanceCount] = function(obj) {}; 

「this.el」を直接「渡す」ことはできません。これはコールバックによって行われなければなりません。

+0

grecaptcha.renderでこのコールバックをどのように参照しますか?これはグローバル関数を参照する必要がありますか? – Himmators

+0

@Himmators:*「このコールバックをgrecaptcha.renderでどのように参照するのですか?これはグローバル関数を参照する必要がありますか?」*私は保証しません。それがそうであると思う文書を指し、あなたが誤解していることを説明します。 –

+0

'callback'のように:window.myCallbackFunctions [SubmitForm.instanceCount] – user489872

関連する問題