• Home
  • Sobre mim
Blue Orange Green Pink Purple

Flex 4 – Two-way data binding

Posted in Flex, Flex 4. on quinta-feira, janeiro 21st, 2010 by Stefan Horochovec Tags: Data Binding, Flex 4, Two-way Data Binding
jan 21

Olá amigos

Neste post quero comentar uma nova feature do Flex SDK 4 que é o “two-way data binding”, mas o que é e no que isso pode nos auxiliar no dia a dia?

Mas afinal, o que é o Data Binding? É a ação de passar valores de um objeto para outro de forma automática. Quando um objeto sofre uma alteração em determinada propriedade dele, essa alteração é refletida em algum atributo de um objeto. Esse objeto pode ou não, vir a ser o mesmo objeto que sofreu a primeira alteração.

No Flex 3.x o Data Binding possibilitava o espelhamento de informação de um objeto para outro porém o inverso não ocorria de forma automática, dessa forma, éramos obrigados a criar outro Binding, só que desta vez, fazendo a operação de forma inversa, conforme segue código abaixo:

?Download DataBinding.mxml
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 
	<mx:Binding source="campoA.text" destination="campoB.text"/>
	<mx:Binding source="campoB.text" destination="campoA.text"/>
 
	<mx:TextInput id="campoA" x="10" 	y="10"/>
	<mx:TextInput id="campoB" x="178" 	y="10"/>
 
</mx:Application>

Obviamente que isso dificultava o trabalho do desenvolvedor em seu dia-a-dia, além de aumentar o consumo de memória das aplicações.

No Flex 4.0 a Adobe preparou uma ótima surpresa para auxiliar neste problema – “Two-way Data Binding”.

Mas como ele funciona? Simples, através da declaração adicional twoWay no objeto Binding você pode definir se o binding deve enviar e receber alterações no atributo do objeto de origem.

Veja exemplo abaixo:

?Download TwoWayBinding.mxml
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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">
	<fx:Declarations>
	</fx:Declarations>
 
	<fx:Binding source="campoA.text" destination="campoB.text" twoWay="true"/>
 
	<s:TextInput x="10" y="21" id="campoA"/>
	<s:TextInput x="146" y="21" id="campoB"/>
 
</s:Application>

Simples, dessa forma já qualquer alteração feita no TextInput “campoB” será refletida no TextInput “campoA” e vice-versa.

Também é possível fazer a declaração conforme exemplo abaixo, utilizando o @ em conjunto com os {}:

?Download TwoWayBinding.mxml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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">
	<fx:Declarations>
 
	</fx:Declarations>
 
	<fx:Binding source="campoA.text" destination="campoB.text" twoWay="true"/>
 
	<s:TextInput x="10" y="21" id="campoA"/>
	<s:TextInput x="146" y="21" id="campoB"/>
 
	<s:TextInput x="10" y="65" id="campoC" text="@{campoD.text}"/>
	<s:TextInput x="150" y="65" id="campoD"/>
 
</s:Application>

Eu prefiro a primeira opção, utilizando a declaração do < fx:Binding > para um melhor entendimento e ordenação do código-fonte.

Um abraço e até a próxima.

5 Comments

  1. jandersonfc on janeiro 21st, 2010

    excelente dica, mais uma vez o flex facilitando a nossa vida :)

  2. Stefan Horochovec on janeiro 22nd, 2010

    O Flex 4 SDK está muito legal, tenho feito o download de todas as pre-releases e realmente dá vontade de usar do dia a dia já, porém ainda temos que aguardar por não estar 100% finalizado.

    Já comecei a alterar os nossos componentes e o seu tamanho tem diminuído bastante. Flex 4 vai ser muito bom!

  3. Ribeiro on fevereiro 3rd, 2010

    Sem dúvida um recurso muito útil. Porém uma coisa ainda não está boa: Não é possível fazer esse data binding em variáveis diferentes.

    Ou seja, isso aqui: “” dá “Error: Implicit coercion of a value of type String to an unrelated type int”. Onde produto.id é do tipo int.

  4. Ribeiro on fevereiro 3rd, 2010

    Sem dúvida um recurso muito útil. Porém uma coisa ainda não está boa: Não é possível fazer esse data binding em variáveis diferentes.

    Ou seja, isso aqui: “<mx:TextInput text=”@{produto.id}” />” dá “Error: Implicit coercion of a value of type String to an unrelated type int”. Onde produto.id é do tipo int.

  5. Randy Nielsen on fevereiro 22nd, 2010

    Hi Stefan,
    I recently read your InsideRIA post on Flex 4 New Features: Two-way Data Binding and really liked it.

    We’re trying to add more links in our docs so that Flex developers are made aware of the great community content out there. I’m wondering whether you would consider adding a comment with a link to your post to the following page:

    * Your page: http://www.insideria.com/2010/02/flex-4-new-features-two-way-da.html
    * Our page: http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf69084-7cc0.html

    Integration of customer-generated content is a key component in the success of the Flash platform documentation, so we really appreciate your contribution. FYI, here’s a blog post with a little more information about community help contributions: http://blogs.adobe.com/actionscriptdocs/2009/08/developers_and_writers_adobe_w.html. This post specifically mentions Adobe AIR but we’re doing this across the entire Adobe Flash Platform.

    Best regards
    Randy Nielsen
    Flex Documentation Manager
    Adobe Systems Incorporated



Leave a Reply

Stefan Horochovec

  • Blogosfera
    • Erko Bridee
    • Fábio da Silva
    • Igor Costa
    • Janderson FC
    • Jose Carlos Fiel
    • Mario Junior
    • Mario Santos (msdevstudio)
    • Rodrigo Fraga
    • Vedovelli
  • Links
    • Flexmania
    • Forum – FlexBrasil
    • RedeRIA
  • Pessoal
    • Blog em Inglês
    • LinkedIn Profile
    • Oreilly Blog
  • Categorias
    • AIR (14)
    • BlazeDS (4)
    • Eng. de Software (2)
    • Flash Builder (1)
    • Flash Player (1)
    • Flex (18)
    • Flex 4 (4)
    • FlexBuilder (1)
    • FlexDuck (4)
    • Flexmania (1)
    • Geral (3)
    • Java (10)
    • Palestras (1)
    • Pessoal (2)
    • Sem categoria (8)
    • Tecnologia (1)
  • Archives
    • julho 2010
    • junho 2010
    • maio 2010
    • março 2010
    • janeiro 2010
    • novembro 2009
    • outubro 2009
    • setembro 2009
    • agosto 2009
    • julho 2009
    • junho 2009
    • maio 2009
    • abril 2009
    • março 2009
    • dezembro 2008
    • outubro 2008
    • março 2008
    • fevereiro 2008
    • janeiro 2008
  • Search






  • Home
  • Sobre mim

© Copyright Stefan Horochovec. All rights reserved.
Designed by FTL Wordpress Themes brought to you by Smashing Magazine

Back to Top