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(); 

당신이 이들 중 하나의 인스턴스를 참조 할 때마다

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

하는 R에 개최에 대해주의 : 다른 CommonJS 모듈 내부에서 창, 그냥 전역 모듈을 사용 당신이 그들을 닫고 파괴했다고 생각한 후에이 창들에 대한 eferences. 전역 모듈에서이 모듈에 대한 참조를 남겨두면 가비지 수집을하지 않으며 메모리/리소스 누출을 만들 수 있습니다.

관련 문제