2009-08-19 51 views
0

我開發了一個組件,它是幾個項目(畫布,標籤等)的組合,但是當我嘗試將它綁定到一個變量,例如:{stationXML.getItemAt(1).AAA。@值},它不起作用。在組合所有項目之前,他們都在主MXML文件中,他們在哪個時間工作。如何綁定到組件內的全局變量?

不確定是否重要,但在文件「Station.as」內聲明瞭「stationXML」arraycollection變量。

任何想法?

回答

1

當你說「全局變量」在哪裏以及如何聲明它? Flex應用程序中並沒有真正的全局變量。如果您在主MXML類中聲明瞭一些不會使其成爲全局的東西,則可以通過該主要應用程序類的實例來訪問它。如果你想訪問組件內的那個值,那麼你必須把它傳遞給那個組件。或者,你可以實現一個單例類來有效地提供對這些值的「全局」訪問。


例如,在組件中,創建一個公共屬性:

public var xmlData:XML; 

然後在主MXML,傳遞值向下:

<xxx:MyComponent id="foo" x="10" xmlData="{theValue}"/> 
+0

我很抱歉我的錯誤陳述。該項目在Station.as文件中聲明爲「公共」變量(可綁定)。如何將該值傳遞給該組件? – Seidleroni 2009-08-19 19:53:22

+0

您可以在組件上定義一個外部事物可以「設置」的公共屬性。然後,只需從主mxml中設置該屬性即可。看到我上面的編輯。 – Marplesoft 2009-08-19 21:49:04

+0

非常感謝你,這工作完美!唯一的變化是我必須讓變量(xmlData)在組件內部綁定。但是有一個問題。應用程序是否會在組件內部創建一個全新的XML變量(將本質上相同的內容佔用的內存翻倍),還是更像是一個指針? – Seidleroni 2009-08-20 13:02:17

0

是否Station.as擴展EventDispatcher並且該類(或屬性)是否攜帶[Bindable]元數據標記?對於綁定工作,您的類需要在其繼承結構中擴展EventDispatcher某個位置,以便它能夠通知綁定「客戶端」它已更新。

+0

Station.as不擴展EventDispatcher 。我該怎麼做,它有什麼作用?該項目聲明爲可綁定的,例如: [Bindable] public var stationXML:ArrayCollection = new ArrayCollection; – Seidleroni 2009-08-19 19:51:17