0

長い間、グローバル変数を作成してアプリケーションを作成していましたが、ロードするモジュール経由でアクセス可能でした。私はcommonJSモジュール内から(たとえば更新リスト用)他のウィンドウを操作することができmyApp.windows[windowName][functionName]を呼び出すことによってAppceleratorのcommonJSモジュールからグローバル値にアクセスする方法は?

var myApp = { 
    windows: {} 
} 

myApp.windows.mainWindow = require('libs/pages/mainWindow').create(); 

myApp.windows.mainWindow.open(); 

。他のウィンドウを閉じて開くこともできます

commonJSモジュール内からグローバル変数を呼び出すことは適切ではないことがわかりました(プッシュからアプリを開いたときにいくつかの問題が発生しました)。

commonJSモジュールからウィンドウコンテンツを読み込む場合、他のウィンドウにアクセスするにはどうすればよいでしょうか?

答えて

1

IIRCでは、グローバルにアクセスする方法はiOSでも動作しますが、Androidでは動作しません。あなたは正しい、それは良い練習ではない。しかし、モジュール内にグローバル変数を格納することができます。

モジュールのlibs/Globals.jsを作成します。あなたのapp.jsで今

Globals = function() {}; 

Globals.windows = {}; 
module.exports = Globals; 

を、あなたはこれを行う:

var G = require ('libs/Globals') 
G.windows.mainWindow = require('libs/pages/mainWindow').create(); 

あなたはこれらのいずれかのインスタンスを参照するようにしたい任意の時間別のCommonJSモジュールの中からウィンドウを開き、グローバルモジュールを使用してください:

var G = require ('libs/Globals') 
G.windows.mainWindow.close(); 

あなたがそれらを閉じて破壊したと思った後、これらのウィンドウを参照します。グローバルモジュールでそれらへの参照を残すと、ガベージコレクションは行われず、メモリ/リソースリークが発生する可能性があります。

関連する問題