2010-06-19 5 views
0

J'ai quelque chose comme 10 composants qui ont un code très similaire, sauf pour la cible à laquelle il s'applique et quelques autres différences mineures.Sécher/refactoring flex/code actioncript

Par exemple, je reviens à xml component1 et component2 qui diffère de cette façon:

component 1: event.result.names.name 
component 2: event.result.phones.phone 

Je lie alors ceux-ci à un List, et le nom de cette liste diffère par le composant.

component 1: nameslist.dataProvider = 
component 2: phoneslist.dataProvider = 

Comment puis-je créer une seule méthode qui accepte en tant que paramètres, seuls les noms/pointeurs/références aux objets que je besoin travaillé. Pour les exemples nameslist ou phoneslist comme List ou .phones.phone par rapport à .names.name pour la structure du xml retourné?

Répondre

2

Il me semble que vous pouvez utiliser une fonction comme paramètre pour votre composant.

Ainsi, vous aurez une propriété comme celui-ci:

public var dataProviderFunction : Function; 

et la valeur que vous lui donnerais peut-être quelque chose comme ceci:

public function getNamesDataProvider(object:XML):xml{ return xml.namesList.dataProvider } 

Ou comme ceci:

public function getNamesDataProvider(object:XML):xml{ return xml.phonesList.dataProvider } 

Regardez comment le code source de la classe List et voyez comment labelFunction et itemToLabel sont implémentés.

+0

Salut Jeffry, Merci pour la réponse. Ce code est-il supposé être dans le fichier de l'application principale? Désolé, je suis encore un peu confus. N'a pas enveloppé ma tête totalement autour de votre réponse. – duder

+0

La var publique irait dans votre composant. La fonction que vous utilisez en tant qu'argument irait très probablement dans le parent du composant. Si vous fournissiez un échantillon complet, il serait plus facile de pointer et de dire «mettez-le ici». – JeffryHouser