Here is where I am struggling.  I have created a component extended  
from the TextInput field to update certain fields in my database.

The text property of the TextInput class is bound to a value form the  
ModelLocator.  When this value is changed (focusOut event) a general  
command is sent to the database with an id that indicates which  
database field should be updated.  The update happens and a 'success'  
result is returned to the Command.  The idea is that fields are  
updated as the user tabs rather than using a 'submit' button.  
Everything is working well up to this point, until....

On a successful database update,  I can't figure out a way to update  
the modelLocator from the Command. Since this is a generic Command I  
need to be able to dynamically tell the Command which ModelLocator  
property to update on which call.  Here are the solutions I have  
thought of but I can't seem to get anything working.

1) Pass a reference to the ModelLocator property that needs updating  
and then update that reference in the Command.  Unfortunately, I  
can't figure out how (and if I even can) pass a true reference to the  
Command.  It seems that everything I try just get passed as a string.

2) Pass a string to the Command that can be parsed into a ML  
reference.  This can work...sometimes on simple VO's, but gets very  
complicated with nest VO's in ArrayCollections.  I am not sure there  
is an easy way to do this...

3) Create some sort of hash map or array map that maps certain  
'codes' to ModelLocator properties.  This seems rather brittle & time  
consuming.

4) Create 2-way binding using the Binding class.  I was able to do  
this and make it work, however, I couldn't find a way to do it  
dynamically, where the 'destination' property could be a variable and  
not a string.  Also, I could only set this while in the view, which  
means, the ModelLocator would get updated before it was confirmed  
that the server update was successful.  Obviously this is a little  
dangerous.

I am out of ideas, but I still think there must be a way to achieve  
this.  Any thoughts???

Thanks for the help,

Kevin

Reply via email to