[
https://issues.apache.org/jira/browse/FLEX-34143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13934082#comment-13934082
]
Alex Harui commented on FLEX-34143:
-----------------------------------
Observable seems to just notify of a change without notifying why it changed.
Also, sometimes bindings change not because of an event, but because of the
instantiation of an object or even at the end of application startup.
> 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
> Original Estimate: 672h
> Remaining Estimate: 672h
>
> 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)