アンドロイドの合金アプリケーションのバックボタンの動作を理解できません。このシナリオは次のとおりです。appellereratorの合金アプリケーションのアンドロイドの戻るボタンの動作
使用するパラメータを渡すウィンドウの1つにウィジェットをロードしています。私は標準的な方法でこれらの引数を取得しています:
var args = arguments[0] || {};
私はargsをnullに設定しています。今、私はクローズボタンを使用してウィンドウを閉じる限り、これは正常に動作します。 argsはnullに設定され、再度ウィンドウを開くと再インスタンス化されます。
バックボタンでウィンドウを閉じると、argsはnullに設定されますが、再びウィンドウを開いた後は再インスタンス化されず、nullのままです。私はヘビーウェイトとライトの両方のウィンドウでこれをチェックしました。
戻るボタンは何をしていますか?ウィンドウを開くときに、すべての引数の再インスタンス化を再び有効にするにはどうすればよいですか?
コード: のindex.xml
<Alloy>
<Window id="myWin" class="container">
<View layout="vertical">
<Require type="widget" src="myWidget" id="myWidget" title='mainWindow' close='mainWindow' />
</View>
</Window>
</Alloy>
index.js:
// setting args to null on window close
$.myWin.addEventListener('close', function() {
$.myWidget.resetData();
});
インサイドはMyWidgetのコントローラー、widget.js:
var args = arguments[0] || {};
// sets args to null
function resetData() {
args = null;
}
exports.resetData = resetData;
上記のコードは再しません一度NULLに設定されたargsを開始します(ウィンドウを閉じるボタンで閉じるとき)。しかし、私がargsをエクスポートしてウィンドウコントローラ内でnullに設定すると、argsがnullであることが示されますが、argsは再び開始されなくてもウィンドウを再び開いた後にすべてのデータを保持します。
コード: index.js
$.myWin.addEventListener('close', function() {
$.myWidget.args = null;
});
インサイドはMyWidgetのコントローラー、widget.js:
exports.args = args;
をここで起こっている正確にどのような?
ウィンドウを閉じる方法と、argsをnullに設定する方法のコードをいくつか共有できますか? –
なぜargsをnullにする必要がありますか? AFAIKウィンドウを閉じると、すべての子要素もメモリから削除されるので、argsがグローバル変数に割り当てられていない限り、argsをnullにする必要はありません。 –
実際、argsはウィジェットコントローラ内のグローバル変数として設定されています。さて、問題の再初期化に失敗しているので、範囲を変更できません。したがって、私がその範囲をローカルに変更した場合、次回は必要な引数が得られません。 – learner123