Adobe Flex: Utilizando expressão booleana em uma variável bindable

quinta-feira, 29 de dezembro de 2011


O uso do bindable em variáveis de componentes no Flex, especialmente utilizadas para os comportamentos de enabled e visible, são extremamente úteis e tornam a programação mais simples e direta.

Em um determinado projeto precisei controlar a visibilidade de um componente baseado em duas variáveis, isto é, somente se as duas forem verdadeiras deverá ser visível ou não um determinado componente.

Geralmente para realizar um bindable de uma variável em um componente utilizamos apenas uma variável e não duas, desta forma:

 <mx:Box visible="{variavel}" width="40" horizontalAlign="center" verticalAlign="middle">

Para colocar duas variáveis, o natural seria colocar assim:

 <mx:Box visible="{variavel && variavel2}" width="40" horizontalAlign="center" verticalAlign="middle">

Mas o compilador apresentará erros de sintaxe. No entanto se utilizarmos uma expressão do tipo ou:


 <mx:Box visible="{variavel || variavel2}" width="40" horizontalAlign="center" verticalAlign="middle">

O compilador não apresentará nenhum problema.

A questão é que como estamos trabalhando com uma linguagem de marcação, a MXML, não podemos utilizar o caractere especial &. O compilador apresentará erro de sintaxe conforme já dito. Para contornar, basta substituirmos o caractere & por &amp; para realizar a devida conversão. Logo teremos:

 <mx:Box visible="{variavel &amp;&amp; variavel2}" width="40" horizontalAlign="center" verticalAlign="middle">


Ainda há outra solução que é utilizar um operador ternário. Lembrando da sintaxe de um operador ternário:

<condição> ? <operação 1> : <operação 2>;

Se a <condição> for verdadeira será realizado a <operação 1> do contrário, será realizado a <operação 2>.
Aplicando e adaptando ao nosso exemplo:

 <mx:Box visible="{(variavel) ? (variavel2): false}" width="40" horizontalAlign="center" verticalAlign="middle">

Via Thanks, Mister.

Nenhum comentário:

Postar um comentário