0

Pendant longtemps, je créais des applications en créant une variable globale accessible via des modules que je chargeais.Comment accéder à la valeur globale du module commonJS dans Appcelerator?

var myApp = { 
    windows: {} 
} 

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

myApp.windows.mainWindow.open(); 

En appelant myApp.windows[windowName][functionName] je pouvais manipuler d'autres fenêtres (par exemple des listes de mise à jour) à l'intérieur du module CommonJS. Je pourrais également fermer, ouvrir d'autres fenêtres

J'ai trouvé que l'appel des variables globales à partir dans le module CommonJS ne sont pas bonnes pratiques (et connu quelques problèmes lors de l'application a été ouverte de poussée).

Quelle est la meilleure approche pour accéder à d'autres fenêtres si le contenu de la fenêtre est chargé depuis le module commonJS?

Répondre

1

IIRC, la façon dont vous accédez à GLOBALS pourrait fonctionner sur iOS, mais pas sur Android. Vous avez raison, ce n'est pas une bonne pratique. Mais vous pouvez stocker des variables globales dans un module.

Créer un module libs/Globals.js:

Globals = function() {}; 

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

maintenant dans votre app.js, vous faites ceci:

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

Chaque fois que vous souhaitez référencer une instance d'un de ces les fenêtres de l'intérieur d'un autre module CommonJS, il suffit d'utiliser le module Globals:

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

Faites attention à Eferences à ces fenêtres après que vous pensez que vous avez fermé et détruit les. Si vous laissez des références dans le module global, ils ne seront pas récupérés et vous risquez de créer des fuites de mémoire/ressources.