I’m not a big fan of doing ActionScript inline within tags and/or within attributes. However, it does make data binding to properties extremely simple. Example, if you want to show a city & state based on a result from a webservice that takes a zipcode, you can do:
<mx:Label id="cityState_lbl" text="{ws.result}" />
Extremely simple binding. I’d personally rather do this in code because I’m an MXML purist, but you cannot deny the power of it.
What I just learned today was that sometimes naturally your data binding results from web services can be long making your MXML unreadable since you have a long object property name list in your MXML attribute tag.
I’ve always wondered why the dataProvider tag starts with a lowercase “d”, for example like the ComboBox:
<mx:ComboBox id="SoftwareSelection"><mx:dataProvider>
<mx:Array>
<mx:String>Macromedia Flex</mx:String>
<mx:String>Macromedia Dreamweaver</mx:String>
<mx:String>Macromedia ColdFusion</mx:String>
<mx:String>Macromedia Flash</mx:String>
</mx:Array>
</mx:dataProvider></mx:ComboBox></pre>
That always threw me off, but today I learned why.
You can nest ANY attribute of a Component/Class/Tag in Flex. So, for the above, if your webservice result is obnoxiously long, you can instead nest it for readability:
<mx:Label id="cityState_lbl">
<mx:text>
{yourLongWebServiceName.result.nestedPropName}
</mx:text>
</mx:Label>
Wow… that’s awesome! Thanks David George for that pimp technique.