Bonjour à tous,
Par curiosité, je voudrais comprendre
Quelque chose m'échappe dans le mécanisme de binding de l'exemple suivant. Je ne comprend pas pourquoi le label du premier bouton ne fonctionne pas alors que le deuxième si :s
L'application : deux boutons qui ajoute 'y' au nom du chien
et le "modèle"
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 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:local="*"> <fx:Script> <![CDATA[ [Bindable] private var _pm:PM; [Bindable] private function get dog():Dog{ return _pm.animal as Dog; } private function set dog(value:Dog):void{ _pm.animal = value; } protected function nicknameButton_clickHandler(event:MouseEvent):void { if(_pm==null){ _pm = new PM(); }else{ dog.nickName = dog.nickName +'y'; } } ]]> </fx:Script> <s:layout> <s:HorizontalLayout /> </s:layout> <s:Button id="notWorkingButton" label="{dog.nickName}" click="nicknameButton_clickHandler(event)"/> <s:Button id="workingButton" label="{(_pm.animal as Dog).nickName}" click="nicknameButton_clickHandler(event)"/> </s:Application>
PM.as :
Animal.as :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 [Bindable] public class PM { public var animal:Animal; public function PM() { this.animal = new Dog(); } }
Dog.as :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [Bindable] public class Animal { public function Animal() { } }
Merci d'avance pour vos explications.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [Bindable] public class Dog extends Animal { public var nickName:String = "Jack"; public function Dog() { super(); } }
Partager