Bonjour,

Je souhaiterai créer un composant mxml réutilisable dans un mxml.

L'appel dans le mxml hôte se ferait de la sorte :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel
	xmlns:mx="http://www.adobe.com/2006/mxml"
	styleName="IndexStack"
	width="800"
	height="600"
	title="Calculatrice"
	status="default"
    xmlns:calculator="com.joshua.application.cal.view.components.modules.calculator.visual.*"
	>
	<calculator:CalculatorVisComp />
	<calculator:CalculatorVisComp />
</mx:Panel>

Pour l'instant mon code de CaculatorVisComp est dans le fichier CalculatorVisComp.mxml et est le suivant : (C'est une calculatrice qui fait une addition de textinput a et textinput b et mets le resultat dans label result. Cela me sert a faire des tests)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
<?xml version="1.0" encoding="utf-8"?>
<mx:Box
	xmlns:mx="http://www.adobe.com/2006/mxml"
	creationComplete="register()"
  	styleName="calculator"
	backgroundColor="#fccfcc"
	>
	<mx:Script>
    <![CDATA[
		import com.joshua.application.cal.view.components.modules.calculator.CalculatorMediator;
		import com.joshua.application.cal.ApplicationFacade;
 
		function register():void
		{
			var appFacade   : ApplicationFacade = ApplicationFacade.getInstance();
			appFacade.registerMediator(new CalculatorMediator(this));
		}
    ]]>
	</mx:Script>
	<mx:Metadata>
		[Event('TRY_COMPUTE')]
	</mx:Metadata>
	<mx:Script>
    <![CDATA[
     	import com.joshua.application.cal.model.vo.OperandeVO;
    	[Bindable] public var operandeVO:OperandeVO = new OperandeVO();
    	public static const TRY_COMPUTE:String='TRY_COMPUTE';
    ]]>
	</mx:Script>
	<mx:Binding source="a.text" destination="operandeVO.a" />
	<mx:Binding source="b.text" destination="operandeVO.b" />
	<!--  mx:Binding source="result.text" destination="operandeVO.result" / -->
	<mx:VBox>
		<mx:Form id="calForm" styleName="stdForm" defaultButton="{submitButton}">
			<mx:FormHeading label="Calculatrice (Addition seulement)" />
			<mx:FormItem label="opérande a = " required="true">
				<mx:TextInput id="a" text="{operandeVO.a}" />
			</mx:FormItem>
			<mx:FormItem label="opérande b = " required="true">
				<mx:TextInput id="b" text="{operandeVO.b}" />
			</mx:FormItem>
			<mx:FormItem>
				<mx:Button 	id="submitButton" label="Calculer"
							click="dispatchEvent(new Event(TRY_COMPUTE,true));" />
			</mx:FormItem>
		</mx:Form>
		<mx:HBox>
			<mx:Label text="Résultat = "></mx:Label>
			<!-- cas 1 -->
			<mx:Label id="result" text="{operandeVO.result}"></mx:Label>
			<!-- cas 2 -->
			<mx:Label name="result" text="{operandeVO.result}"></mx:Label>
		</mx:HBox>
	</mx:VBox>
</mx:Box>
Dans le cas ou je met le label en id (cas 1 dans le code ci-dessus) et que je modifie par id la valeur de l'attribut text de label d'id result, c'est une seul des labels d'un des composants calculatrices qui est modifiés.

Dans le cas ou je met le label en name (cas 2 dans le code ci-dessus) et que je modifie par name la valeur de l'attribut text de label avec ~getByName~ result, c'est le label qui correspond au champ a et b qui sont modifies.

Donc ma question est quand on cree des composant on identifie ces éléments par noms ou par id. Sachant que je veux pouvoir utilisé plusieurs composant dans une meme Panel.

Merci.