2010-05-20 36 views
0

我正在嘗試創建一個模塊化結構,最終將生活在另一個actionscript/flex應用程序中。我在外部應用程序中使用cairngorm,我想在內部應用程序中創建此新組件的多個實例。由於模型的單例性質,Cairngorm不適用於創建多個重複組件。如何創建可在整個組件中共享的實例模型(可以多次創建)

我正在創建的組件是僞視頻查看器。我想在這個組件實例中有一個共享模型。我正在努力在組件中共享單個模型。如果我使用單例模式,我不能創建此組件的多個實例。如果我創建一個實例並讓組件確保只有一個實例,那麼我無法輕鬆地將模型傳遞給所有需要它的組件。這尤其困難,因爲.mxml組件不能在模型中傳遞構造函數。

我正在考慮讓每個組件詢問其父組件,直到組件擁有它爲止。這將要求每個組件都實現了該接口,並且對我來說感覺有點不舒服。

有誰知道在組件內創建實例變量的方法,以便可以創建多個組件,還可以在該組件中輕鬆共享該模型?

+0

這很有趣,你標記這個問題即使swiz標籤是swiz的唯一參考。你想讓別人告訴你應該使用swiz並將模型實例注入特定的組件中嗎? :-) – 2010-05-20 14:14:53

+0

另一個可行的解決方案是讓組件的根元素通過mxml僞造模型實例。 想到這樣的事情可能會奏效,看來這傢伙(http://www.dehats.com/drupal/?q=node/49)由僞解決它通過MXML模式注入演示模式: \t <視圖:BookDetailsPanel X = 「418」 y = 「10」 \t \t bookDetailsPM = 「{appModel.mainPM.ficheLivrePM}」/> 凡BookDetailsPanel是視圖和appModel是由父組件保持的實例。 – Scott 2010-05-20 14:18:18

+0

我將它標記爲Swiz,因爲我知道Swiz有一個Prototype概念,雖然並沒有真正解決問題,但它比Cairngorm的單身唯一方法好一點。我對Swiz沒有太多經驗,我們大部分的工作都在Cairngorm中,所以我想看看Swiz是否有這樣的想法,並且有一種我沒有看到過的框架來完成這樣的事情。我應該提到我嘗試了一個Swiz解決方案,但Prototype構造不允許在整個組件中共享,並且單例具有與Cairngorm相同的問題。 – Scott 2010-05-20 14:21:55

回答

0

最新的Swiz版本(1.0.0)有這個問題的答案。現在,您可以在項目中創建Swiz的多個實例並設置父子關係。模塊支持頁面是他們最好解釋的地方(http://swizframework.jira.com/wiki/display/SWIZ/Module+Support),但實際上你不需要使用模塊,任何父母子女關係都可以工作。

只記得,爲了保持每一個事件處理程序從子視圖響應事件,則需要將事件處理範圍設置爲本地,例如:

[EventHandler(event="TestEvent.SAVE_USER_REQUESTED", scope="local")] 
public function handleEvent(event:Event):void { 
    //do stuff 
} 
相關問題