Hi,
> The XXXDataBinding classes handle the {} data binding statements in MXML.
> They set up watchers and binding instances that react to change events,
> which are the key piece in data binding.
>
> More verbose, but now the compiler won't let you mis-type fontWeight.
> SimpleCSSStyles only contains the most common styles I could think of.
> Folks can create their own versions for their own purposes. However,
> these classes are, because of PAYG, simple bags of properties and do not
> dispatch change events. BindableCSSStyles dispatches change events.
Thanks for that, that clears some of my confusion up.
It does seem rather heavy weight just to change a background colour but lets go
with it.
One thing I noticed in the FlexJS store that seems a little odd:
<js:beads>
<js:ContainerDataBinding />
<js:LayoutChangeNotifier watchedProperty="{borderStyles.borderColor}"
initialValue="#FFFFFF" />
</js:beads>
<js:style>
<js:BindableCSSStyles id="borderStyles" borderStyle="solid"
borderWidth="1"
borderColor="#FFFFFF" backgroundColor="#FFFFFF"/>
</js:style>
Why is the LayoutChangeNotifier needed here?
So I changed my approach to this:
<?xml version="1.0" encoding="utf-8"?>
<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:js="library://ns.apache.org/flexjs/basic">
<js:beads>
<js:ContainerDataBinding />
</js:beads>
<fx:Script><![CDATA[
public function clicked():void {
bg.backgroundColor = "red";
}
]]></fx:Script>
<js:valuesImpl>
<js:SimpleCSSValuesImpl/>
</js:valuesImpl>
<js:initialView>
<js:View>
<js:VContainer>
<js:Container id="box" width="100" height="100">
<js:style>
<js:BindableCSSStyles id="bg" backgroundColor="grey" />
</js:style>
</js:Container>
<js:TextButton text="Click me" click="clicked()" />
</js:VContainer>
</js:View>
</js:initialView>
</js:Application>
But it still fails to work. I can see the ValueChangeEvent being despatched but
nothing seem to catch it.
The ContainerDataBinding is probably not needed in this case.
Thanks,
Justin