flex组件传值
我现在有俩个component,具体结构是:-MainApp-component1-component2component1里面有个datagrid,component2...
我现在有俩个component,具体结构是:
-MainApp
-component1
-component2
component1 里面有个datagrid, component2里有个lable,
希望点击datagrid的column时选定的column index可以在component2的lable上显示
修正一下,结构是:
-MainApp
-component1
-component2
-component3
从2传到3, 我试了1楼的方法不行啊,即使在MainApp里也不行,说是access of undefined property 展开
-MainApp
-component1
-component2
component1 里面有个datagrid, component2里有个lable,
希望点击datagrid的column时选定的column index可以在component2的lable上显示
修正一下,结构是:
-MainApp
-component1
-component2
-component3
从2传到3, 我试了1楼的方法不行啊,即使在MainApp里也不行,说是access of undefined property 展开
2个回答
展开全部
用事件来解决,我这里分三个文件:Main.mxml、ComponentA.mxml、ComponentB.mxml内容分别是:
Main.mxml文件
=======================
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init();" xmlns:local="*">
<mx:Script>
<![CDATA[
import mx.events.ListEvent;
internal function init():void{
comA.addEventListener(ListEvent.ITEM_CLICK,componentA_itemClick);
}
internal function componentA_itemClick(evt:ListEvent):void{
comB.text=evt.columnIndex.toString();
}
]]>
</mx:Script>
<local:ComponentA id="comA" width="100%" height="100%" />
<local:ComponentB id="comB" width="100%" height="30" />
</mx:Application>
ComponentA.mxml文件
============================
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script>
<![CDATA[
import mx.events.ListEvent;
private function dg_itemClick(evt:ListEvent):void{
//转发此事件
this.dispatchEvent(evt);
}
]]>
</mx:Script>
<mx:DataGrid width="100%" height="100%" itemClick="dg_itemClick(event);">
<mx:columns>
<mx:DataGridColumn headerText="测试1" dataField="@c1" />
<mx:DataGridColumn headerText="测试2" dataField="@c2" />
</mx:columns>
<mx:dataProvider>
<mx:XMLList xmlns="">
<item c1="aaaa" c2="aaaaa" />
<item c1="bbbb" c2="bbbbb" />
</mx:XMLList>
</mx:dataProvider>
</mx:DataGrid>
</mx:VBox>
componentB.mxml文件
==========================
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script>
<![CDATA[
public function set text(value:String):void{
lab.text=value;
}
]]>
</mx:Script>
<mx:Label id="lab" />
</mx:HBox>
Main.mxml文件
=======================
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init();" xmlns:local="*">
<mx:Script>
<![CDATA[
import mx.events.ListEvent;
internal function init():void{
comA.addEventListener(ListEvent.ITEM_CLICK,componentA_itemClick);
}
internal function componentA_itemClick(evt:ListEvent):void{
comB.text=evt.columnIndex.toString();
}
]]>
</mx:Script>
<local:ComponentA id="comA" width="100%" height="100%" />
<local:ComponentB id="comB" width="100%" height="30" />
</mx:Application>
ComponentA.mxml文件
============================
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script>
<![CDATA[
import mx.events.ListEvent;
private function dg_itemClick(evt:ListEvent):void{
//转发此事件
this.dispatchEvent(evt);
}
]]>
</mx:Script>
<mx:DataGrid width="100%" height="100%" itemClick="dg_itemClick(event);">
<mx:columns>
<mx:DataGridColumn headerText="测试1" dataField="@c1" />
<mx:DataGridColumn headerText="测试2" dataField="@c2" />
</mx:columns>
<mx:dataProvider>
<mx:XMLList xmlns="">
<item c1="aaaa" c2="aaaaa" />
<item c1="bbbb" c2="bbbbb" />
</mx:XMLList>
</mx:dataProvider>
</mx:DataGrid>
</mx:VBox>
componentB.mxml文件
==========================
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script>
<![CDATA[
public function set text(value:String):void{
lab.text=value;
}
]]>
</mx:Script>
<mx:Label id="lab" />
</mx:HBox>
展开全部
重新来一遍:
1. component2
里加个属性
public funciton get columnIndex() : int {
return datagrid.xxxxx; // 取到datagrid 当前选择的列;
}
2. component1
也加个属性
public funciton get columnIndex() : int {
return component2.columnIndex; // 返回2里上边做的属性
}
3. component3
加上数据绑定
<label text="{component1.columnIndex}"/>
1. component2
里加个属性
public funciton get columnIndex() : int {
return datagrid.xxxxx; // 取到datagrid 当前选择的列;
}
2. component1
也加个属性
public funciton get columnIndex() : int {
return component2.columnIndex; // 返回2里上边做的属性
}
3. component3
加上数据绑定
<label text="{component1.columnIndex}"/>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询