I’m trying to understand property bindings in more detail. In particular I’m curious about the evaluation of property bindings on a component in a window when the window is first opened (not cached). Obviously each bound property will be evaluated in turn. But what if one particular property depends on another and that other property has not yet been evaluated?
I did a test. On a template I defined two properties -
smName. In a window I placed an instance of the template and I bound the value of
aName to the value of
smName using a property binding. I set the value of
'sm1'. In the propertyChange event script of the template I have the following:
if event.propertyName == 'aName': print 'aName changed', event.newValue, event.oldValue if event.oldValue else 'None' if event.propertyName == 'smName': print 'smName changed', event.newValue, event.oldValue if event.oldValue else 'None'
When the window is opened the output on the console is:
aName changed sm1 None smName changed sm1 None
This leads me to believe that
aName is evaluated before
smName. But when
aName is evaluated
smName has no value (you can see it changed from
sm1 but not until after
aName was evaluated). So how does
aName get the value
sm1? Should it not get the value
On a side note: when does the component get painted on the window? After all these bindings have been evaluated?