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)