Another area where “old” Flex was easier is data binding. Currently, to get data binding to work, you need to specify the correct data binding bead. That’s great, but I’m not sure it covers all cases, and knowing what to use where is not immediately obvious.
Additionally, a lot of uses of “data binding” is not really data binding at all. Being able to specify a property in curly brackets is a very convenient method of specifying values which need to be evaluated at instantiation, even if they never need to be evaluated and “bound” at runtime. I think this kind of simple evaluation should work even if data binding beads are not used. Even if I specify data binding, the kind of data binding I’m used to doing does not work very well in FlexJS. I have a PanelStrings class which has a bunch of getters for localized strings. The strings are evaluated at runtime based on the locale. I have a lot of text=“{PanelStrings.FOO}” in my code which generate compile errors. The only way I was able to see to get rid of the errors was: 1. Declare a local (public) Bindable variable: [Bindable]public var FOO:String = PanelStrings.FOO and declare that. It’s a pain to double declare these strings everywhere they are used in mxml. 2. Used a static function: text=“{PanelStrings.getStr(‘FOO')}”. This is error prone because “FOO” can easily be misspelled. Is there a way to bind class static getters in FlexJS? In “classic” Flex, just making the class extend EventDispatcher, made the compiler stop complaining. Harbs