You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flex.apache.org by "Gary Yang (JIRA)" <ji...@apache.org> on 2014/03/13 21:25:42 UTC
[jira] [Created] (FLEX-34143) Give an event handle.
Gary Yang created FLEX-34143:
--------------------------------
Summary: Give <fx:Binding /> an event handle.
Key: FLEX-34143
URL: https://issues.apache.org/jira/browse/FLEX-34143
Project: Apache Flex
Issue Type: Improvement
Components: Data Binding
Reporter: Gary Yang
1st of all, Flex Binding is great!!!
I am using it this way:
>>>>>>>>>>>>>>>>>code>>>>>>>>>>>>
<fx:Script><![CDATA[
[Bindable("dataChange")]
public function get rowData():VLogicTreeGridRow{
return data as VLogicTreeGridRow;
}
private var _cellData:VLogicTreeGridCell;
[Bindable(event="cellDataChanged")]
public function get cellData():VLogicTreeGridCell{
return _cellData;
}
private function set rfrCellData( v:* ):void{
if( rowData != null
&& logicTreeGrid.columns != null && logicTreeGrid.columns.length > 0
&& rowData.cellList != null && rowData.cellList.length > 0
){
var idx:int = logicTreeGrid.columns.getItemIndex( treeGridColLogic );
var rt:VLogicTreeGridCell = rowData.cellList.getItemAt( idx ) as VLogicTreeGridCell;
if( _cellData != rt ){
_cellData = rt;
dispatchEvent( new Event( "cellDataChanged" ) );
}
}
}
]]></fx:Script>
<ui:layout>
<s:HorizontalLayout paddingTop="2" paddingBottom="2" paddingLeft="2" paddingRight="2"/>
</ui:layout>
<fx:Binding source="logicTreeGrid.columns.length" destination="rfrCellData"/>
<fx:Binding source="rowData.cellList.length" destination="rfrCellData"/>
<<<<<<<<<<<<<<<code<<<<<<<<<<<<
Because the destination of Binding tag can only be setters, I have to use it this way if I want to handle changes from the Binding sources, do you think it's possible to add a handle for Binding tag so that I can see exactly what event caused the change please?
So that it can be like this
>>>>>>>>>>>>>>>>>code>>>>>>>>>>>>
private function refreshCellData( ev:Event ):void{
if( ev is CollectionEvent ){
}
else if( ev is PropertyChangeEvent ){
}
if( rowData != null
&& logicTreeGrid.columns != null && logicTreeGrid.columns.length > 0
&& rowData.cellList != null && rowData.cellList.length > 0
){
var idx:int = logicTreeGrid.columns.getItemIndex( treeGridColLogic );
var rt:VLogicTreeGridCell = rowData.cellList.getItemAt( idx ) as VLogicTreeGridCell;
if( _cellData != rt ){
_cellData = rt;
dispatchEvent( new Event( "cellDataChanged" ) );
}
}
}
]]></fx:Script>
<ui:layout>
<s:HorizontalLayout paddingTop="2" paddingBottom="2" paddingLeft="2" paddingRight="2"/>
</ui:layout>
<fx:Binding source="logicTreeGrid.columns.length" changeHandle="refreshCellData"/>
<fx:Binding source="rowData.cellList.length" changeHandle="refreshCellData"/>
<<<<<<<<<<<<<<<code<<<<<<<<<<<<
This is going to be very useful!!!
--
This message was sent by Atlassian JIRA
(v6.2#6252)