[
https://issues.apache.org/jira/browse/FLEX-34143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13934436#comment-13934436
]
Gary Yang commented on FLEX-34143:
----------------------------------
According to my knowledge, Flex Binding depend on two kinds of events:
1) PropertyChangedEvent, which will trigger binding when a)there is a
[Bindable] for a class, and any of it's public property changed; b) a public
property with [Bindable];
2) Any event with event type in property getter's [Bindable(
event="eventTypeTriggeringBinding")], which will trigger binding when it is
dispatched.
a binding is always:
<fx:Binding source="a.b.c.d" destination~~~~
What I am expecting to know is which of [ a, b, c, d ] 's change triggering the
handler, NOT the source event( could be anything event MouseDown, totally out
of Binding's scope);
I'm sorry for the confusion.
> 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)