Pages

搜尋此網誌

2013年12月25日 星期三

extjs 事件宣告的建議

extjs 事件宣告的建議

在使用 extjs 時,我們有幾個地方可以宣告事件的處理:

  1. 在 controller 下宣告
  2. 在 component 下宣告

一般剛開始使用 extjs 會搞不清楚什麼時候該使用 mvc 中的 controller 來定義,又或者直接宣告在 component 上,特別是 extjs 4 一大特性 mvc,會讓使用者覺得宣告在 controller 是第一選擇,這樣架構上比較符合官方建議,其實不然,既然 extjs 也支援在 component 上宣告事件,自然有其意義。

既然兩個方式都可以宣告事件,我們該如何區別事件的歸屬呢?筆者認為可以從事件發生關係到的元件或者元件特性(特定功能或是共用元件)來做區別,在明確的說,假設事件所操作的對象所涵蓋的範圍只有該元件以及元件 item 屬性底下所掛載的其他元件,那就應該定義在元件上,若是事件處理涵蓋多個元件的組合互動,那就應該要使用 controller 來定義。

另一個角度,如果該功能屬於共用元件,那事件應該定義在元件底下,屬於特定的功能事件,那應該使用 controller 來處理。

如此一來,如果是定義在元件上的事件,只要某功能有引入該元件,就不需要重覆定義,該元件就有基本的事件互動,一旦需要調整,也不需要一一去改有用到的元件,只要修改宣告事件的元件即可,這樣的情形就像通用元件的狀況,相反地,定義在 controller 的事件就是個別功能的特性了。

舉例來說,如筆者上一篇 精簡程式碼案例分享 中的範例是一個標準的功能工具列,事件的定義就是宣告在元件定義上,之後只要有引入使用該標準工具列,就不需要在定義相關的事件。

最後根據上述的內容,整理出建議的事件定義對象

  1. 如果事件的處理需要整合多個元件那應該定義在 controller 底下
  2. 如果該元件屬於特定功能才有的元件就算事件範圍只在某元件底下,事件還是要要定義在 controller 底下。
  3. 如果事件處理範圍只屬於某個元件底下並且屬於公用元件,那事件應該定義在元件
張貼留言