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)