2013-12-15 126 views
0

在Flex中,我們可以將可視元素分離爲MXML組件並在需要時加載到舞臺。但是,父級和MXML組件如何進行通信?我的意思是:Flex MXML組件

  1. 我們如何訪問父對象和MXML組件中創建的變量或函數?
  2. 我們如何才能在父級或MXML組件中彼此訪問元素?意思是,如果在MXML組件中有文本輸入,我們如何從父文件訪問textinput值,反之亦然?

謝謝。

+0

通常這可以通過使用微體系結構(Mate,Swiz,RobotLegs)來完成。當然,你不需要一個框架,但是沒有一個框架的東西會變得非常非常令人討厭。 –

+0

您的問題沒有簡單的解決方案。使用框架是解決方案之一,但您需要研究這些框架並選擇其中的一個。也許,你可以研究如何在組件之間進行通信。以下是關於此主題的非常好的教程:http://www.flextras.com/blog/index。cfm/2013/2/1/How-do-one-Flex-Component-talk-to-another-Flex-Component – michael

+1

@FlexFiend我不同意:完全可以使用工具創建結構化,可維護的體系結構Flex 4提供了(數據綁定,通信事件冒泡,將視圖與其邏輯分開的蒙皮等)。 user1995781除了michael引用的帖子之外,你可能還想看看數據綁定。它允許您直接使用模型,而不必像第二個項目符號那樣直接訪問TextInput的值。 – RIAstar

回答

0

我們如何訪問在父級和MXML 組件中創建的變量或函數?

您不應該。組件不應該知道它的父項,因爲這被認爲是封裝中斷。封裝中的突破使得您的代碼可重用性降低。我寫了一篇關於如何two components should communicate with each other的深入博客文章。

我們如何訪問父對象或MXML組件中的對象? 含義,如果在MXML組件中有文本輸入,我們如何從父文件中訪問 文本輸入值,反之亦然?

正如我上面所說,你不應該。

很多人爲了幫助在應用程序中共享值而做了很多事情,那就是創建一些類型的模型類來存儲數據。因此,您的父組件會以某種方式將TextInput的文本值存儲到模型類中,可能是通過使用Binding。

然後,您將模型類的相同實例添加到子項中;並且它可以訪問相同的值。有幾種方法可以實現這一點。

您可以使用所有靜態變量創建模型類。

您可以創建您的模型類作爲單例,因此只能創建它的單個實例;然後添加所有類使用的「getInstance()」方法。

您可以使用依賴注入框架將模型類添加到父項和子項中。 Swiz和Robotlegs等框架都支持依賴注入。

我已經將所有上述方法用於不同的項目。第三種方法,使用框架,是企業級應用程序中最常見的方法,其中事情可能非常迅速地變得非常複雜。

+0

Reboog711,您的博客中的帖子非常好。謝謝。 – michael