2017-08-31 20 views
0

私は3番目のコールバック関数(それ自身のコールバックではない)に余分なパラメータを渡そうとしています。js - コールバック関数に余分なパラメータを渡す

const selectedItems = dt.rows({ selected: true }); 
const selectedIndexes = selectedItems.indexes(); 
const selectedData = selectedItems.data(); 

let data_object = []; 

$.each(selectedData, (i, o) => { 
    data_object.push(o['PackageName']); 
}); 

window.bridge.deleteApps(data_object, (success_list, selectedIndexes) => { 
    console.log("test"); // selectedIndexes -> undefined 

}); 

背景:これは、Pythonのメソッド(PyQtは)をトリガQtの機能が付属しています、最初のパラメータは、第二のparamをPythonのために渡されたPythonのメソッド(success_list)からの戻りとのコールバック関数ですが、私もselectedIndexesが必要です。

私が行うと

window.bridge.deleteApps(data_object, (success_list, abc=selectedIndexes) => { 
    console.log("test"); // abc + selectedIndexes is available 

}); 

ごめんなさい、あなたがテストするが、私は、コールバックに関するいくつか・研究を行なったし、実際にそれを理解していないため、私は何の作業スニペットをしましたので、私はできませんよということこの場合を再現する。

答えて

1

あなたの混乱の一部は、コールバックの処理方法です。基本的には、あなたが提供するコールバックにパラメータを渡すことはwindow.bridge.deleteAppsまでです。だから、あなたがその関数の作者でない限り、追加のパラメータを渡す良い方法はありません。ただし、上記の例ではconstと宣言しており、コールバックからアクセスできるため、selectedIndexesにアクセスする必要があります。

ですから、このコードを持つことができるようになります。

window.bridge.deleteApps(data_object, (success_list) => { 
    console.log(selectedIndexes); // Should be available because you've declared it in a higher scope 
    console.log(success_list); // Gets passed by the .deleteApss function 
}); 
+0

OMGあなたは正しいです...私はAF混乱している、私はそれがselectedIndexesがundefined'ある '言ったかなり確信して第一およびIAMみました厥 - .- – FalloutBoy

+0

'selectedIndexes = selectedItems.indexes();'を呼び出して 'selectedIndexes'の値を取得する場合、実際に値を取得していることを確認してください。実際に他の呼び出しを行う前に 'selectedIndexes'が何を記録することができますか? – stetsmando

+0

はい、うまくいきました。私は昨日コールバック関数にアクセスしていたときに「未定義」エラーが出ていると確信しています。なぜ私は助けを求めていましたが、コールバック内の変数に簡単にアクセスできるようになりました。問題:Sああ、助けてくれてありがとう! – FalloutBoy

関連する問題