在弹出窗口中重新加载主窗口的变量

时间:2011-08-12 09:02:13

标签: flex popup

我有一个关于如何从弹出窗口访问主窗口变量的问题。

我在主窗口中创建一个弹出窗口,并将变量“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窗口中调度一个事件,并在主窗口中添加监听器 popw​​in中的代码片段:

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中的文本值设置为空白。

有人知道为什么吗?

2 个答案:

答案 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;
    }
}