2017-05-04 17 views
-1

私はJSモジュールと2つの機能を持っています。最初の関数はajax要求を行い、モジュールの2番目の関数を呼び出す必要があります。したがって、context=thisを設定しました。jQueryの成功データは未定義です(コンテキスト:thisを使用)

return BaseController.extend(...) { 
    ... 
    loadChart: function() { 
     ... 
     $.ajax({ 
      url:..., 
      data:...., 
      async: false, 
      context: this, 
      success: function(data) { 
       try { 
        for (var i = 0; i < data.d.length; i++) { 
         // do something with data 
        } 

        this.function2(); 
       } catch() { 
        .... 
       } 
      } 
     }); 
    }, 

    function2: function() { 
     // do something... 
    } 
} 

function2の呼び出しが正常に動作しますが、dataは未定義です。どうして? contextステートメントを削除した場合、dataが定義されていますが、function2に電話することはできません。どうも。あなたが何かしようとすることができ

+0

が、これは観測誤差でなければなりません。 'context'オプションを設定しても、' success'関数に渡されるものには何の効果もありません。 –

+0

console.log(this)をコードのさまざまな部分に配置してみてください。デバッグできるはずです。 –

+0

@ FreemanLambda:そうです。私が 'context:this'を使用している限り、データオブジェクトを使用することはできません。私はそれが "openUI5"フレームワークに関連しているかどうかわかりません... – Tobias

答えて

-1

私はかなりまだスコープを理解していないと仮定し ...:に関しては

loadChart: function() { 
    ... 
    var that = this; 
    $.ajax({ 
     url:..., 
     data:...., 
     async: false, 
     success: function(data) { 
      try { 
       for (var i = 0; i < data.d.length; i++) { 
        // do something with data 
       } 

       that.function2(); 
      } catch() { 
       .... 
      } 
     } 
    }); 
}, 

function2: function() { 
    // do something... 
} 

}

+0

ここでは、その変数を使って外部関数のコンテキストにアクセスできます。両方の機能を使うことができます。あなたは正確に何をしたいのですか? – hvs9

関連する問題