You are right, it is because your model.pendingContact and model.newContact are object references and not object instances. When you do the assignment you are just pointing them to the same object in memory - 2 references, 1 object. In your second case you create a second object, 2 objects, 2 references. This is a familiar concept if you have spent any time coding in Java.
I'm willing to bet you won't find a cloning technique that will really suit your purposes (but then I enjoy a flutter). From personal experience I am yet to find a use for cloning that I have stuck with. I have used it in Java but every time I have thought it was a solution it turned out not to be because of some logical constraint in the data. Most likely there will be some logic implicit in the member variables or your object (such as id's etc) that it would not be safe to simply clone. If you have a complex object containing an array what would you expect it to do? I generally resort to intelligent copying and a self-impose standard interface across my code to copy (I used to use overloaded = operators and copy constructurs in C++ but that's the very distant past). For the case that you cite you must be binding the individual members of your VO to form fields to display their values. One approach is to trap the <enter> key on those fields and apply the new values back to the object. That way you only need a single object and its state is represented by the fields in your form... <mx:TextInput id="txt_Name" text="{myVOContact.name}" enter="saveName()"/> ... private function saveName():void{myVOContact.name=txt_Name.text;} ... You might wind up with lots of little saveX() functions but that wouldn't be the end of the world. Alternatively you could probably also bind the assignment directly... <mx:TextInput id="txt_Name" text="{myVOContact.name}" enter="{myVOContact.name=txt_Name.text}"/> Not every control support the enter event but there is normally some analogue, such as a combo closing or a checkbox state changing or a radio button being selected that will do just as well. A third method involves putting a submit button on the page. When clicked, manually transfer the data from the form fields to your VO and post back to the server. Unless you are measuring the changes in your data I'm not seeing the value of a second object instance (yippee, no clone). --- In flexcoders@yahoogroups.com, Kevin <[EMAIL PROTECTED]> wrote: > > i think my problem boils down to one of object cloning. Does anyone > have a good solution for deep cloning objects in AS3? Seems like > this would be a pretty useful utility. > > - Kevin > > > > On Mar 26, 2007, at 1:50 PM, Kevin wrote: > > > I have trying to figure out how best to accomplish the two-way data > > binding needed for form entry. Here is what I thought would work, > > but it doesn't seem to: > > > > ON MODEL: > > I created two variables that hold my VO. > > > > model.pendingContact > > model.newContact > > > > The user clicks a button to get ContactVO data from the server. In > > the command class I assign the result (which is a typed PHP > > ContactVO) to each variable: > > > > model.pendingContact = data.result; > > model.newContact = data.result; > > > > I then bind my form fields to "model.pendingContact" so that the > > existing values from the server show up in the TextInput fields. > > > > Lastly, I use the BindingUtil methods to bind the "text" property of > > the TextInput fields back to "model.newContact" so that I can record > > any changes and send them back to the server. > > > > When the user submits the form, "model.pendingContact" should hold > > the old values & "model.newContact" should have the new values. > > Correct?? > > > > Am I overlooking something. The only way I can get this to work is > > if I don't assign "model.newContact" to the values from the server > > and instead create a new instance like this: > > > > model.pendingContact = data.result; > > model.newContact = new ContactVO; > > > > However, I can't do this because I need the newContact to start out > > with the old values from the server. Is there a duplicate or clone > > object method that I need to use so that both model variables can be > > assigned to the same object from the server?? > > > > Thanks for the help. > > > > - Kevin > > > > >