今天在做FLEX项目时遇到一个问题:
前提描述:
界面上有两种STATE:NEW_STATE,UPDATE_STATE
UPDATE_STATE下,数据来自数据库查询的结果,界面上的控件绑定为
<mx:TextInput id="code" text="{formData.code}">
其中formData为全局变量,用于接收查询到的数据对象,而code则是数据表中的一个字段
NEW_STATE下,做了以下操作:
formData = new Object();
formData.code = "TEST";
场景描述:
先在界面上查询数据,查询后点击按钮进入详细信息界面,即UPDATE_STATE,此时code.text="REALLY"(数据库中保存的数据)
接着通过新建按钮切换到NEW_STATE,发生了奇怪的现象,code的内容并没有像预期设置的一样为"TEST",而是"REALLY"
修改方案:
查了半天,没找出原因,原本以为切换到NEW_STATE后会执行
formData = new Object();
formData.code = "TEST";
而<mx:TextInput id="code" text="{formData.code}">又指定了将code.text与formData.code进行绑定,应该能在NEW_STATE时更新code.text,可是结果却没有;
最后采用了以下的方法
formData = new Object();
var temp:Object = new Object();
temp.code = "TEST";
formData = temp;
修改后结果就和预期的一致了。
结论:考虑了很久也没想出合适的解释,只能说暂时解决了这个问题。