2012-12-13 61 views
1

說,我有一個複選框一個DataGrid,每一個複選框標示爲我存儲在彎曲的ResultEvent應該通過事件傳遞多少信息?

public class MyItemRenderer extends ItemRenderer{ 

    public static var CLICK:String = "CheckBoxClick";  

    protected function itemRendererClickListener(data:Object):void{ 

    dispatchEvent(new ResultEvent(MyItemRenderer.CLICK, data)) 
    } 

} 

的數據屬性的對象我在這裏處理的結果。

protected function checkbox_clicked(event:ResultEvent):void{ 
    //Here I do everything I want with the data. 
    Alert.show(event.result.toString()); 
} 

這是我一直使用了幾個月,但我從來沒有想過如果這是一個不好的做法。

更不用說不好的做法,那麼做到這一點的最佳方法是什麼?

回答

3

這不是真的'壞'。但它確實創建了一個對象的附加引用,該對象可能會將該對象更長時間地保存在內存中(如果管理不好,則無限期地)。

一般而言,您應該只在事件實例中存儲與事件本身相關的數據。您可以使用event.targetevent.currentTarget屬性重新引用分派事件並以此方式獲取數據的對象。

就你而言,你的事件是複選框狀態變化。事件本身(被檢查)除了被檢查的項目(你可以用'target'或'currentTarget'得到)之外不需要任何與它相關的數據。因此,這將做到以下幾點是我認爲比較合適的:

Alert.show(MyItemRenderer(event.currentTarget).data.toString()); 

這樣可以使您的活動更可重複使用的