2016-06-28 4 views
0

私は、関数名と私はjqueryのgetScriptによってJSスクリプトをロードするためにそれを使用します別のプロパティを格納するオブジェクトを使用します。 Iはオブジェクトがこの配列に存在している場合、私はそのスクリップを呼び出し、その関数(FUNC)を実行するチェックするinAarrayによって条件使用しているが、私はまだJSのスクリップ負荷後の実行のために機能するために、そのオブジェクトの値を変換するためにスタックしています状態の成功の中で。 vals.function以来オブジェクト値をjavascriptの関数に変換するにはどうすればよいですか?

function fetchingData(n_source_id, types, not_id) { 

    var data = { 
     'Loan Repayment':{ 
      url:'/js/load/loan/loan_repayment.js', 
      func:'repayment'// name of function which I will call after JS file successfully loaded 
     }, 
     'Reject Repayment':{ 
      url:'/js/load/loan/repay_change_till_acc.js', 
      func:'changeTill'// name of function which I will call after JS file successfully loaded 
     }, 
     'Issue Till': { 
      url: '/js/load/issueTill.js', 
      func: 'issueTill'// name of function which I will call after JS file successfully loaded 
     } 
    }; 
     $.each(data, function(inx, vals) { 

      var _type = inx; 
      var url = vals; 

      if ($.inArray(types, [_type]) >= 0) { 

       ScriptRequire([vals.url], function(status) { 

        if (status === 'success') { 

         var fun = new Function(vals.function); 

         console.log(fun(n_source_id, types)); 
         return fun; 
        } 
       }); 
      } 
     }); 
    } 

答えて

1

は関数オブジェクトを取得するには、以下の使用していない、関数の名前を保持し、関数がすでにロードされたスクリプトによって定義されるべきである。

var fun = new Function(vals.function); 

代わりに、使用:

var fun = window[vals.function]; 
+0

は今、私の代わりにそれが –

+0

@HengSopheakよりも良いかもしれオブジェクトのメソッドを使用することにしました - あなたはgetScriptによってロードされた関数を意味するかグローバル関数ではなく、のプロパティですオブジェクト?それともあなたの質問に対する答えをもはや探していないということですか? –

+0

私はあなたのコードをテストしたのでうまくいきましたが、代わりにオブジェクトからアクセスメソッドを使用しました。 –

関連する問題