Kev*_*vMo 3 apache-flex flex3 actionscript-3
我刚开始弯曲,如果这是一个愚蠢的问题,请原谅我.
现在我正在使用自定义事件将数据从一个组件传递到另一个组件.我的问题是事件只会冒泡.如何将数据传递给不是调度事件的组件的父组件?
这是基本布局.我正在尝试将组件1中的数据传递给组件3.
Application MXML
Component 1
Component 2
Component 3
Run Code Online (Sandbox Code Playgroud)
cli*_*ers 10
如果图形/树中的所有组件都需要一条数据,那么最好的办法是在每个组件上公开一个公共可绑定属性.让子组件调度由父级处理的冒泡事件,父级可以设置可绑定属性的新值.如果将属性从父级绑定到子级,则会"级联"到其他组件.
<!-- in root application -->
<Component1 myData="{myData}"/>
Run Code Online (Sandbox Code Playgroud)
如果需要调用其他逻辑,可以定义get/set对而不是public var,并为setter添加逻辑:
[Bindable] private var _myData;
public function set myData(value:Object):void
{
_myData = value;
doSomeLogic();
}
Run Code Online (Sandbox Code Playgroud)
更好的方法是使用Flex的失效框架来优化性能:
_myDataChanged : Boolean = false;
[Bindable] private var _myData;
public function set myData(value:Object):void
{
if (_myData != value) {
_myData = value;
_myDataChanged = true;
}
invalidateProperties();
}
override protected function commitProperties() : void {
super.commitProperties();
if (_myDataChanged) {
_myDataChanged = false;
doSomeLogic()
}
}
Run Code Online (Sandbox Code Playgroud)
在构成Flex框架的所有UIComponent中,此模式在所有位置都使用.您可能还需要覆盖updateDisplayList(...)来定位元素.