1.如果使用MVC框架,相信这并不是一个问题。而如果没有使用的话,可以用类似的方法设置一个单例,子窗口和父窗口通过这个单例来交互消息,如果需要解耦,请发送自定义事件。总之,只要按照MVC思路来做就可以了。
2.类似JS,在子窗口的构造函数里增加一个参数,将父窗口传参进去。MXML没有构造函数,用一个属性来保存父窗口引用也可以。
3.无论是createPopUp还是addPopUp,他们都有一个返回值,得到子窗口的实例。可以对这个实例监听remove事件,并在这个事件中直接读取子窗口需要返回给父窗口的属性。(记得要将这个事件最终移除)
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
" layout="absolute">
<mx:Panel x="94" y="178" width="503" height="347" layout="absolute">
<mx:TextInput x="134" y="64" id="tit_usr" text="username"/>
<mx:TextInput x="134" y="125" id="tit_psw" text="password"/>
<mx:Button x="171" y="209" label="Submit" click="mytw_click()"/>
</mx:Panel>
<mx:Script>
<![CDATA[
import mx.containers.TitleWindow;
import mx.managers.PopUpManager;
import mx.controls.Text;
private var tw:titlewindow=new titlewindow();
private function mytw_click():void{
if(tw.visible){
PopUpManager.removePopUp(tw);
}
PopUpManager.addPopUp(tw,this);
PopUpManager.centerPopUp(tw);
tw.addEventListener("tw_click",update);
}
private function update(event:Event):void{
tit_usr.text=tw.tw_usr.text;
tit_psw.text=tw.tw_psw.text;
PopUpManager.removePopUp(tw);
}
]]>
</mx:Script>
</mx:Application>
弹出窗口:
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml
" layout="absolute" width="498" height="368" showCloseButton="true" close="PopUpManager.removePopUp(this)">
<mx:Label x="96" y="67" text="username" width="97" height="26"/>
<mx:Label x="96" y="128" text="password" width="97" height="24"/>
<mx:TextInput x="217" y="65" id="tw_usr"/>
<mx:TextInput x="217" y="126" id="tw_psw"/>
<mx:Button x="228" y="239" label="Click" click="btn_click()"/>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.controls.Text;
private function btn_click():void{
dispatchEvent(new Event("tw_click"));
}
]]>
</mx:Script>
</mx:TitleWindow>
4.
owner property
owner:DisplayObjectContainer [read-write]
The
owner of this UIComponent. By default, it is the parent of this
UIComponent. However, if this UIComponent object is a child component
that is popped up by its parent, such as the dropdown list of a ComboBox
control, the owner is the component that popped up this UIComponent
object.
This property is not managed by Flex, but by each
component. Therefore, if you use the PopUpManger.createPopUp() or
PopUpManger.addPopUp() method to pop up a child component, you should
set the owner property of the child component to the component that
popped it up.
The default value is the value of the parent property.
我也不翻译了- -说真的我看到了感觉很囧。owner这个属性在Popup中没有用途,因此,可以在创建窗口的时候将子窗口的owner设置成父窗口(也就是当时的this),然后子窗口访问自己的owner属性即可。
父窗口代码:PopUpDemo.mxml
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
" layout="absolute">
<mx:Panel x="94" y="178" width="503" height="347" layout="absolute">
<mx:TextInput x="134" y="64" id="tit_usr" text="username"/>
<mx:TextInput x="134" y="125" id="tit_psw" text="password"/>
<mx:Button x="171" y="209" label="Submit" click="mytw_click()"/>
</mx:Panel>
<mx:Script>
<![CDATA[
import mx.containers.TitleWindow;
import mx.managers.PopUpManager;
import mx.controls.Text;
private var tw:titlewindow=new titlewindow();
private function mytw_click():void{
tw.owner = this;
PopUpManager.addPopUp(tw,this);
PopUpManager.centerPopUp(tw);
}
]]>
</mx:Script>
</mx:Application>
弹出窗口代码:titlewindow.mxml
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml
" layout="absolute" width="498" height="368" showCloseButton="true" close="PopUpManager.removePopUp(this)">
<mx:Label x="96" y="67" text="username" width="97" height="26"/>
<mx:Label x="96" y="128" text="password" width="97" height="24"/>
<mx:TextInput x="217" y="65" id="tw_usr"/>
<mx:TextInput x="217" y="126" id="tw_psw"/>
<mx:Button x="228" y="239" label="Click" click="btn_click()"/>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.managers.PopUpManager;
import mx.controls.Text;
private function btn_click():void{
//dispatchEvent(new Event("tw_click"));
var a:PopUpDemo = this.owner as PopUpDemo;
a.tit_usr.text = this.tw_usr.text;
a.tit_psw.text = this.tw_psw.text;
PopUpManager.removePopUp(this);
}
]]>
</mx:Script>
</mx:TitleWindow>
分享到:
相关推荐
在Android开发中,"点击按钮后,出现一个popup" 是一种常见的交互设计,它涉及到按钮事件监听和PopupWindow的使用。PopupWindow是Android系统提供的一个轻量级窗口,它可以显示在屏幕任意位置,并且可以自定义其内容...
标题中的“javascript实现浮动窗口传值”指的是在网页中使用JavaScript技术来创建一个浮动窗口(通常是弹出框或对话框)并与主页面或其他窗口进行数据交互。这种功能常见于提示信息、用户输入验证或者在不刷新整个...
在Angular开发中,有时我们需要实现弹窗功能,例如popup弹窗。传统的做法是利用`ngIf`指令将弹窗的DOM元素隐藏在页面底部,通过改变`ngIf`的值来控制弹窗的显示和隐藏。然而,这种方法并不够通用,每个页面都需要...
点击子页(引用页) popup 按钮 1 添加依赖 <groupId>com.os.cross-domain</groupId> <artifactId>cross-domain-lib <version>1.0-SNAPSHOT 2 添加映射 2.1 spring-boot import ...
本篇文章主要介绍了如何使用 Vue 框架实现 PopupWindow 组件,涵盖了组件、props 传值、slot 内容插入、transitions 过渡动画、x-template 模板等多个 Vue 特性。下面将详细解释这些知识点。 1. 组件(Component) ...
<button onclick="showPopup($user['id']; ?>)">取现 ``` 4. **处理弹框中的按钮**: 在弹框内,我们可以添加一个链接(或按钮)让用户去设置密码。使用`href`属性将id值传递到新页面。例如: ```html $user...