Para quem já tentou utilizar o Two-way Data Binding (post) em um projeto, deve ter caído em problemas de conversão de tipo, como mostrado pela imagem abaixo:
Esse erro acontece por que estamos tentando fazer 2 operações:
A primeira operação funciona muito bem, pois a classe Number tem o método toString() que é chamado toda vez que fazemos esse tipo atribuição. Nosso problema está com o item 2, onde estamos tentando atribuir uma String a uma propriedade Number.
Para resolver essa situação eu criei a classe NumberInput que extende a classe TextInput do spark, e funciona com um wrapper para a propriedade text do TextInput, o source do novo componente é simples e fica assim:
package br.com..components
{
import spark.components.TextInput;
public class NumberInput extends TextInput
{
public function NumberInput()
{
super();
}
[Bindable("change")]
[Bindable("textChanged")]
public function get textNumber():Number
{
return text==""?NaN:Number(text);
}
public function set textNumber(value:Number):void
{
text = isNaN(value)?"":value.toString();
}
}
}
Quando aplicamos o novo componente, o erro some do projeto e conseguimos compilar:
Abaixo segue o exemplo funcional:
[kml_flashembed movie=”https://www.redspark.io/wp-content/uploads/TwoWayBind1.swf” width=”600″ height=”300″ fversion=”10″/]
Para fazer o download da biblioteca que contém o NumberInput, clique aqui.