1

これはばかげた質問かもしれませんが、Ext JS 4.1.3 アプリケーションの次のコードに苦労しています。

getInvestmentFee_Percentage : function() {
    var rVal = 0;

    Ext.Ajax.request({ 
        url : 'index.php/ajax/getcountryinvestmentfeepercentage/', 
        success : function(transport, json) {
             try {
                  var JSONResponse = Ext.JSON.decode(transport.responseText);
             } catch (e) {
                  return false;
             }

             if(JSONResponse.success == true || JSONResponse.success == "true") {
                  var investTax = 1+parseFloat(JSONResponse.results[0].constantValue);
                  console.log(investTax);
                  // TODO Return investTax
                  return investTax;
             } else {
                  return false;
             }
        },
        failure : function(transport, json) {
            return false;
        }
   });

    return rVal;
}

rVal変数に書き込もうとしていますExt.Ajax.requestが、別のオブジェクトなので書き込めません。AJAX リクエスト以外で使用する値を返すにはどうすればよいですか? もちろん、グローバル変数に書き込むこともできますが、これが正しい方法かどうかは疑問です。

任意の提案をいただければ幸いです。

4

1 に答える 1

2

またはコールバックメソッドが呼び出されるgetInvestmentFee_Percentage前に意志が終了する可能性があるため、この方法ではできませんが、とにかくそれらは異なるスコープにあります。successfailure

したがって、(a) コールバック メソッドのみが値を返すことができますが、これは (最も一般的に) コールバック メソッドのスコープ内で行われます。確かに、現在の関数内でコールバック メソッドを定義できますが、それはすべて同じであり、メソッドは終了します。

ここで実装を再考する必要があると思います。

  • 1 つの方法として、getInvestmentFee_Percentageサブスクライブの呼び出し元がカスタム イベントを使用することがあります。
  • または、の呼び出し元がgetInvestmentFee_Percentageコールバック (および必要に応じてスコープ) を引数として送信し、それを使用できます。

どちらも機能します。

于 2012-12-21T10:01:16.977 に答える