我有一个关于如何从弹出窗口访问主窗口变量的问题。
我在主窗口中创建一个弹出窗口,并将变量“content”传递给此弹出窗口,如下代码所示:
<mx:Script>
<![CDATA[
// ......
popwin = PopUpManager.createPopUp(UIComponent(parentApplication), PopupWindow, true) as PopupWindow;
popwin.parentView = this; // parentView is an IFlexDisplayObject
popwin.content = content;
PopUpManager.centerPopUp(popwin);
// ......
]]>
</mx:Script>
在popwin中,我更改了“content”变量的值,但是当我点击popwin上的“Reset”按钮时,我想重置“content”的值。
我知道,我在popwin窗口中调度一个事件,并在主窗口中添加监听器 popwin中的代码片段:
parentView.dispatchEvent( new CustomEvent(CustomEvent.RESET) );
主窗口中的代码片段:
addEventListener(CustomEvent.RESET, resetContent);
public function resetContent():void{
this.content = loadContent();
}
但是“内容”的值不会在popwin中重置。
我错过了什么吗?
是否还有其他方法可以在弹出窗口中更新“内容”?
===================== 2011年5月15日的问题更新================== ============
我在popwin的createComplete()函数中使用以下代码:
BindingUtils.bindProperty(textInput, "text", content, "name", false);
当我更改textInput的文本值并重置内容时,它会在我的跟踪日志中加载content.name的原始值,但textInput的文本值不会恢复为原始值。
如果我使用以下代码而不是BindingUtils.bindProperty:
[Bindable]
public var content:Content;
......
<mx:TextInput id="textInput" text="{content.name}" />
执行相同的操作,在我的跟踪日志中重新加载content.name,但textInput中的文本值设置为空白。
有人知道为什么吗?
答案 0 :(得分:0)
尝试使用:
popwin = PopUpManager.createPopUp(UIComponent(parentApplication), PopupWindow, true) as PopupWindow;
popwin.parentView = this; // parentView is an IFlexDisplayObject
popwin.content = content;
BindingUtils. bindProperty(popwin, "content", this, "content", false, true);
PopUpManager.centerPopUp(popwin);
答案 1 :(得分:0)
再次设置内容。
public function resetContent():void{
if (popwin != null){
popwin.content = this;
}
}