- Sencha Touch 教程
- Sencha Touch - 首頁
- Sencha Touch - 概述
- Sencha Touch - 環境
- Sencha Touch - 命名規範
- Sencha Touch - 架構
- Sencha Touch - MVC 解釋
- Sencha Touch - 第一個應用
- Sencha Touch - 構建應用程式
- Sencha Touch - 遷移步驟
- Sencha Touch - 核心概念
- Sencha Touch - 資料
- Sencha Touch - 主題
- Sencha Touch - 裝置配置檔案
- Sencha Touch - 依賴項
- 環境檢測
- Sencha Touch - 事件
- Sencha Touch - 佈局
- Sencha Touch - 歷史 & 支援
- Sencha Touch - 上傳 & 下載
- Sencha Touch - 檢視元件
- Sencha Touch - 打包
- Sencha Touch - 最佳實踐
- Sencha Touch 有用資源
- Sencha Touch - 快速指南
- Sencha Touch - 有用資源
- Sencha Touch - 討論
Sencha Touch - 控制器
控制器是 MVC 架構的主要元件之一。
控制器是控制功能的元件。我們在控制器中編寫監聽器,它充當檢視和模型之間的粘合劑,其中檢視用於視覺 UI,而模型用於儲存和操作資料。
控制器的主要功能有:
操作在控制器中編寫,例如,如果我們在應用程式中按下按鈕或將滑鼠懸停在某個連結上,則將在控制器監聽器函式中編寫要執行的操作。
控制器提供了 init 和 launch 函式,它們在應用程式和控制器啟動時被呼叫。
控制器 Init 和 Launch 函式
我們可以在控制器中定義 launch 和 init 函式。應用程式可以有自己的 launch 函式,因此以下是函式應該被呼叫的順序。
應用程式啟動時首先呼叫控制器的 Init 函式。
然後呼叫應用程式的 launch 函式。
在應用程式的 launch 函式被呼叫並且應用程式啟動後,將呼叫控制器的 launch 函式。
控制器的 Config 元件
我們可以在控制器的 config 中使用 refs 和 control。讓我們看看兩者是如何工作的。
Refs
Refs 在 config 中的使用方式如下例所示。
Ext.define('MyApp.controller.Main', {
extend: 'Ext.app.Controller', config: {
refs: {
tab: '#divId
}
},
addLogoutButton: function() {
this.getTab().add({
text: 'Logout'
});
}
});
Refs 可以用來引用任何 id。如上例所示,tab 是建立的 ref,它引用了 id #divId。
Refs 以鍵值對的形式建立,如上例所示,tab 是鍵,divId 是值。每當建立一個 ref 時,都會自動為其建立 getter 和 setter。在上例中,我們建立了一個名為 tab 的 ref,因此我們可以透過 getTab 方法訪問它,該方法是自動建立的。
Control
Control 是一種與 ref 類似的 config,它以 ref 作為鍵,以 listen 函式作為值,該函式被呼叫以執行某些任務。
Ext.define('MyApp.controller.Main', {
extend: 'Ext.app.Controller', config: {
control: {
loginButton: {
tap: 'doLogin'
// ref tap is the key and doLogin is the value which is a listener.
}
},
refs: {
loginButton: 'button[action=login]'
}
},
doLogin: function() {
// called whenever the Login button is tapped
}
});
路由
控制器定義了它感興趣的路由。藉助路由,我們可以將應用程式的任何部分連結到提供的路由。
Ext.define('MyApp.controller.Main', {
extend: 'Ext.app.Controller', config: {
routes: {
login: 'showLogin',
'user/:id': 'userId'
}
},
showLogin: function() {
// statements
},
userId: function() {
// statements
}
});
路由可以透過瀏覽器的位址列 URL 訪問。
在上例中,如果使用者訪問 URL https://myApp.com/#login,則將呼叫 showLogin 控制器函式。
路由也可以使用萬用字元,例如,如果瀏覽器 URL 為 https://myApp.com/#user/3003,則將呼叫 userId 函式。
因此,每當瀏覽器 URL 更改時,路由都會自動呼叫特定的控制器函式。