Skip to main content

Robotlegs AS3 MVC framework in Flex project (II)



這次的範例是兩組 viewComponent 共用同一個 Mediator 外加不同的 instance:
Source code download


要共用的重點就是介面(Interface),所以你會發現這次的兩組 viewComponent 都有實作 IMessageBox
IMessageBox:

public interface IMessageBox
{
function update( newline:String ):void;
}

然後在兩組的 viewComponent 中實作 IMessageBox

<s:Group ....
implements="IMessageBox"
>

<fx:script>
.....
public function update( newline:String ):void{
//IMessageBox interface 實作
data.addItem( newline );
}
.....
</fx:Script>


接下來修改的部份為 MessageBoxMediator

....
[Inject]
public var view:IMessageBox;
//同樣注入屬性...這次記得改成 interface. 因為此 Mediator 為共用
....


接下來在 RobotLegContext startup() 中修改:

....
override public function startup():void
{
//bootstrap here
//auto start, injectViewAs 寫入 viewComponent interface
mediatorMap.mapView( MessageBox, MessageBoxMediator , IMessageBox );
mediatorMap.mapView( MessageBox1, MessageBoxMediator , IMessageBox );
}
....


你會發現 mapView 的 injectViewAs:Class 填入 interface class, 這時候 Robotlegs 的核心在比對 class 的時候才會以 IMessageBox 為主,否則 Mediator 將無法共用,因為在 MessageBoxMediator [Inject] 的 view 為 IMessageBox, 而不是各自實作的 class。

規劃 viewComponent 的共用性也需要考量一下,不然很有可能會有 interface 滿天飛的狀況喔!
以上範例都沒說明到 Command, Proxy and Service ,有興趣的朋友請自行到官網上去找尋相關的教學文章囉!

結論:
Robotlegs 真的很適合懶人 + AS3 MVC 新手學習,不過 Robotlegs 在背地裡做了很多事情,尤其自動化這點雖然方便但是也出現一些奇怪的現象,所以掌控啟動順序可能會比直接用自動化來的安全些...慶幸的是 Robotlegs 程式彈性相當大,非自動化操作起來也是相當的方便。 =)

Comments

Popular posts from this blog

[書評] 拖延心理學:為什麼我老是愛拖延?是與生俱來的壞習慣,還是身不由己?

作者: Jane B. Burka & Lenora M . Yuen 推薦指數 ★★★★★ 有時候,只是想了解事情發生原因而不是尋求解法 在這邊不是要講這本書的內容,而是想聊它對我的影響。