2010-01-04 3 views
0

J'essaie de répertorier la propriété d'un objet dans une propriété de texte ComboBox (modifiable = true). Cette propriété est de type Number.Liaison de données Flex

Si je lie en utilisant la syntaxe en ligne, cela fonctionne:

<mx:ComboBox text="{myObj.prop}"> 

Si je BIND en utilisant mx: Reliure, je reçois une erreur:

<mx:Binding source="{myObj.prop}" destination="combobox.text" /> 

// 1067: Implicit coercion of a value of type Number to an unrelated type String. 

Pourquoi cette différence de comportement?

définition de la propriété:

private var _prop: Number; 

[Bindable] public function get prop(): Number { return _prop; } 
public function set prop(value: Number): void { _prop = value; } 

Répondre

1

Initialement, je pensais: La source mx:Binding doit être le nom du champ lui-même, et non pas la valeur. Flex se plaint parce qu'il déréférencé myObj.prop en raison du {} et voyant la valeur là (un Number) quand il veut une chaîne avec le nom du champ.

<mx:Binding source="myObj.prop" destination="combobox.text" /> 

Cependant:

ActionScript à l'intérieur des accolades est autorisé dans l'expression source mx:Binding, et est nécessaire dans ce cas. Voir le data binding examples d'Adobe.

La text propriété attend un String à attribuer à, donc vous voulez jeter dans votre reliure:

<mx:Binding source="{String(myObj.prop)}" destination="combobox.text" /> 

Mes excuses pour la réponse initiale trompeuse, c'est je l'espère sur la bonne voie.

+0

Je reçois toujours la même erreur après avoir enlevé les crochets. –

+0

Il serait utile de connaître la définition de 'myObj.prop'. –

+0

Parfait. La liaison inverse fonctionne également, en utilisant parseInt. –

Questions connexes