使用自定义事件从子组件更改变量的状态
Posted
技术标签:
【中文标题】使用自定义事件从子组件更改变量的状态【英文标题】:changing the state of the variable from the child component using custom event 【发布时间】:2012-12-04 18:18:52 【问题描述】:这是主要应用程序
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
verticalAlign="middle"
backgroundColor="white" layout="absolute" initialize="init();" xmlns:MyComp="screens.*" >
<mx:Script>
<![CDATA[
import screens.MyEvent;
private function init():void
systemManager.addEventListener("data_transfer",handleDataTransfer);
private function handleDataTransfer(evt:MyEvent):void
this.myViewStack.selectedIndex=1;
]]>
</mx:Script>
<mx:ViewStack id="myViewStack" selectedIndex="0" >
<MyComp:Welcome />
<MyComp:Screen id="fillPage" />
</mx:ViewStack>
</mx:Application>
这是我的欢迎组件
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Script>
<![CDATA[
private function changeHandler():void
var myEVT:MyEvent = new MyEvent("data_transfer",false, true);
this.dispatchEvent(myEVT);
]]>
</mx:Script>
<mx:Button label="Fill The Form" id="fillForm" click="changeHandler()"/>
</mx:Canvas>
这是我的 screen.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Label text="hai">
</mx:Label>
</mx:Canvas>
这是 MYEvent.as
package screens
import flash.events.Event;
public class MyEvent extends Event
public static const DATA_TRANSFER:String = "data_transfer";
public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
super(type, bubbles, cancelable);
我想通过单击欢迎 mxml 处的按钮来获取屏幕 mxml...我是初始学习者.. 但它不起作用..请帮助我..
【问题讨论】:
【参考方案1】:由于您的自定义事件有 bubbling=false,它不会冒泡到 systemManager。试试:
var myEVT:MyEvent = new MyEvent("data_transfer", true, true);
或者,将侦听器添加到正在调度事件的对象:
welcomePage.addEventListener("data_transfer",handleDataTransfer);
....
<MyComp:Welcome id="welcomePage" />
第二种解决方案通常更好/更受欢迎 - 更少的事件冒泡是一件好事
【讨论】:
我们可以在不使用事件的情况下完成这项任务吗...在这种情况下,当单击按钮时(id=fillForm)我们可以编写 click="this.parent.myviewstack.currentIndex=1" 之类的东西这不使用自定义事件.. 是的,你可以 - 但事件的优点是它们更灵活。如果您决定重新排列组件的布局,则必须手动调整所有路径(this.parent.myComponent.etc)。以上是关于使用自定义事件从子组件更改变量的状态的主要内容,如果未能解决你的问题,请参考以下文章