[心得]Mate的ListenerInjector

之前有介紹過Mate 的Event map及Model map架構,這次來講Mate的ListenerInjector 。

同之前的 Model Map的概念,PropertyInjector能為 View注入資料,顧名思義,ListenerInjector則可為View注入監聽,在設計專案的時候,可用ListenerInjector把View的互動建立起來,建立一張 Listener Map表,明確指出事件跟View的關連,方便後期維護,且透過EventAnnouncer,在Event Map也能調用View的變化,使用起來很方便

簡單的ListenerInjector 寫法如下

ListenerMap.mxml

<?xml version="1.0" encoding="utf-8"?>
<EventMap xmlns="http://mate.asfusion.com/" xmlns:mx="http://www.adobe.com/2006/mxml" >
<Injectors target="{Main}" debug="true">
   <ListenerInjector eventType="{NavigateEvent.GOTO_HOME}" method="navigateStateHandler" />
   <ListenerInjector eventType="{NavigateEvent.GOTO_MUSIC}" method="navigateStateHandler"/>
   <ListenerInjector eventType="{NavigateEvent.GOTO_MOVIE}" method="navigateStateHandler"/>
   <ListenerInjector eventType="{NavigateEvent.GOTO_PROFILE}" method="navigateStateHandler" />
</Injectors>
</EventMap>
上面的程式讓Main的View監聽導覽事件(NavigateEvent)的變化,所以在Main裡要寫一個public 的方法來接收事件,範例是用navigateStateHandler

Main.mxml

public function navigateStateHandler(event:NavigateEvent):void
{
var type:String = event.type;
switchMainState(type);
}
在設計上,如果僅是view的變化其實就可以用Listener Map來對應,如果以之前Cairngorm 的概念,View的變化要透過model的值改變,反查比較不易,用Listener Map一下就能知道那些View對應那些事件,這也是Mate依賴注入的好處

Blog參照:Mate Framework Part1, Mate Framework Part2

0 意見 :: [心得]Mate的ListenerInjector