Técnico

Two-way Data Binding – Flex 4 – Problema de Conversão de Tipo

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:

  • 1. Atribuir o valor de user.id (Number) a proriedade text (String)
  • 2. Atribuir o valor de text (String) a proriedade user.id (Number)

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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Compartilhe isso: