2012-09-22 1 views
0

Dans Flex, je souhaite créer une variable qui contiendrait un dictionnaire de composants ui utilisés dans mon application. Idéalement, il y aurait une fonction dans le composant d'application qui renverrait composant pour id:Retour du composant ui en lecture seule dans Flex

public function getComponent4Id(id:String):UIComponent {} 

composant alors j'accéder à l'aide de la ligne suivante:

var myComponent:UIComponent = FlexGlobals.topLevelApplication.getComponent4Id("someId"); 

Maintenant, le seul problème est: Je veux le composant est retourné en lecture seule.
Il est très pratique de lire certaines propriétés de myComponent de tous les coins de l'application, mais je ne veux pas que mes développeurs en abusent et changent myComponent.

Est-il possible de renvoyer une copie de myComponent? Ou est-il possible de le faire en lecture seule d'une manière ou d'une autre?

Répondre

3

Dans la situation que vous décrivez, il n'est pas possible de récupérer les composants en lecture seule.

Vous pouvez créer des variables en lecture seule en implémentant des méthodes get sans méthodes set. Quelque chose comme ceci:

public var get myValue():UIComponent{ 
return UIComponent; 
} 

Cela vous permettra de récupérer l'instance UIComponent, maValeur, du composant; mais vous ne seriez pas en mesure de le définir. Toutefois, cela n'empêcherait pas les utilisateurs de modifier les propriétés du composant UIComponent retourné, sauf si ces propriétés étaient également implémentées en lecture seule.

Je vais ajouter qu'il existe déjà une méthode, getChildByName() pour récupérer un composant enfant par son nom. Si vous avez une instance pour un parent, vous pouvez l'utiliser pour accéder aux enfants. Cela dit, je ne suis pas sûr de comprendre complètement ce que vous espérez accomplir. avec cette fonctionnalité.