Javascript MVC ——Controller

 

原文:http://javascriptmvc.com/docs.html#&who=jQuery.Controller

翻譯: 劉貴學([email protected])

 

 

控制器是使用代理將事件處理組織起來。如果您的應用中有事件發生(用戶點擊或模型實例更新)應當由控制器處理並響應此事件。

控制器可使您的代碼更明確,可複用性與架構性更強,這可自動與底層代碼相隔離,要了解更多關於控制器理論及其相關特性,請關注Jupiter的博客。

基礎示例

替換前:

 

替換後:

 

Tabs實例

使用Controller

控制器(Controller)可以幫您組織並構建jQuery插件。它可用於構建一些簡單的微件,例如slider,也可將多個微件組成一些更大的。要理解如何使用控制器(Controller),您還需要了解一般的jQuery微件生命週期,以及如何映射到控制器的功能。

創建一個控制器類

 

這將創建一個叫做$.fn.my_widget jQuery輔助功能,可用於在html元素上建立一個新的控制器(Controller)實例。

html元素上創建一個控制器實例

$('.thing').my_widget(options) // 調用new MyWidget(el, options)

它在每個 '.thing' 元素上調用了MyWidget(el, options)。當創建一個(類的)新實例時,將調用類的原型方法 setupinit,其中Controllersetup函數:

  •  設置this.element,並添加控制器的名稱與元素的類名;
  •  將默認的對象參數設置給 this.options
  •  在控制器的$.data中保留一個引用;
  •  綁定所有的事件處理函數

控制器響應事件

通常,Controller的事件處理是自動綁定的,Controller可有多種方法監聽事件。

當事件發生時,this(當前Controller實例的引用)的回調函數會被調用,這樣可以更方便的使用輔助函數,並將狀態保存在控制器裏。

微件的銷燬

如果元素從頁面上移除,jQuery.Controller.destroy函數會被調用,專用於存放處理卸載功能。當然,您也可以使用其他方法處理卸載方法:

 

Todos 例子

讓我們看一個非常簡單的例子,待辦事列表與新建按鈕,您的HTML應當如下:

 

mousover添加一個樣式,並新建待辦事,您的Controller應當如下:

 

這樣就創建一個Controller類,您還要在'#todos'層上通過新建一個Controller的實例,進而添加事件處理,有兩種方法:

 

Controller 初始化

給您的widget的添加一個init函數是非常有用的,下面的例子,我們創建一個controller,然後將一個消息輸出html元素:

 

刪除Controllers

jQuery內部支持移除Controller. 所以要移除一個controller, 您只需要移除其元素:

 

請注意:如果您使用原始的DOM方法(innerHTML, removeChild),其控制器無法銷燬。

如果您只想刪除controller功能,調用此controller實例的destroy函數:

 

訪問 Controllers

有時您需要獲取一個controller的引用,有幾種方法可以做到。請看下面的例子,我們假設有2 className="special"的元素。

 

Controller函數的調用

一旦您有一個元素的引用,您就可以使用引用調用元素的所有函數,然而,Controller也有一些調用技巧:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章