2009-08-16 54 views
0

我創建的應用程序,以顯示一個datagrid在Flex 3中 自定義列如何訪問該方法loadDetails在此代碼?:調用從組件外部方法F​​lex 3中

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
    <mx:Script> 
     <![CDATA[ 
      public function loadDetails(id:String) : void { // Some code here 
        } 
     ]]> 
    </mx:Script> 
    <mx:DataGrid dataProvider="{[{id:'123456',name:'',address:''}]}"> 
    <mx:columns> 
    <mx:DataGridColumn headerText="Serial" dataField="id"/> 
     <mx:DataGridColumn headerText="Cliente" dataField="name"/> 
     <mx:DataGridColumn headerText="Dirección" dataField="address"/> 
     <mx:DataGridColumn width="50" dataField="id" headerText=""> 
      <mx:itemRenderer> 
       <mx:Component> 
       <mx:LinkButton label="" toolTip="Details" icon="@Embed('../resources/icons/details.png')" click="loadDetails(data.id);"> 
        </mx:LinkButton> 
       </mx:Component> 
     </mx:itemRenderer> 
     </mx:DataGridColumn> 
    </mx:columns> 
    </mx:DataGrid> 
</mx:Application> 

當我試圖運行這段代碼Flex會引發錯誤。它說loadDetails沒有被定義。我想這個錯誤是因爲範圍。但我不知道如何解決這個問題。

回答

1

Component標籤內的任何內容基本上都是組件工廠的描述符。因此,該標籤內的任何內容都將處於本地範圍內。但是,您可以使用屬性outerDocument(如果我沒有記錯的話)訪問放置該itemRenderer的文檔。

<mx:LinkButton label="" toolTip="Details" icon="@Embed('../resources/icons/details.png')" click="outerDocument.loadDetails(data.id);"/> 
+0

好的..我學習flex,我現在沒有關於.. 我試過了,它的工作原理!! ..謝謝.. =) – l2mt 2009-08-16 19:39:32

0

或者使用冒泡事件的形式,你想做的事(或其他地方)信號上的監聽器。