有了編寫用戶管理的控制器的經(jīng)驗(yàn),寫這個(gè)問題應(yīng)該不大。不過,文章管理的控制器還是要考慮一下怎么寫這個(gè)問題,因?yàn)樵谝晥D里涉及分類的操作和文章的
操作。這確實(shí)是一個(gè)比較費(fèi)神的事。在這里,問題的焦點(diǎn)就是需要不需要拆分的問題了。根據(jù)松耦合的原則,必然是拆分的,但是拆得太小,太凌亂,寫代碼是比較
痛苦的,尤其是象Javascript這樣靈活但結(jié)構(gòu)不太嚴(yán)謹(jǐn)?shù)恼Z言。
筆者開發(fā)大型系統(tǒng)經(jīng)驗(yàn)不多,因而一向比較隨心所欲,方便不礙事就好,因而,筆者在這里傾向于不進(jìn)行拆分,就單獨(dú)一個(gè)控制器,有興趣的讀者可以嘗試自己拆分一下。
在Scripts\app\controoler目錄下,創(chuàng)建一個(gè)名稱為Content.js的控制器,根據(jù)用戶管理的控制器的經(jīng)驗(yàn),先寫下以下代碼:
Ext.define('SimpleCMS.controller.Content',{
extend: 'Ext.app.Controller',
models: [
'Category', 'CategoryTree','CategoryCombo', 'Content'
],
stores: [
'CategoriesTree', 'CategoriesCombo','Contents'
],
views: [
],
refs: [
],
init: function () {
me.control({
});
}
});
代碼中,以把所有模型和Store包括進(jìn)控制器了。視圖還沒創(chuàng)建,因而還沒有定義。引用也是一樣。
現(xiàn)在切換到MainPanel的控制器,在“#contentPanel”的activate事件監(jiān)聽代碼下,刪除console.log的代碼,添加以下代碼:
this.application.getController('Content').init();
這樣,文章管理的控制器就被加載到應(yīng)用了,后續(xù)的工作就是在文章管理控制器的init方法內(nèi)實(shí)現(xiàn)視圖的加載了。
還要修改一下MainPanel視圖的activeTab配置項(xiàng),修改回0,讓文章管理標(biāo)簽頁顯示為默認(rèn)標(biāo)簽頁。
至此,控制器的工作告一段落,接下來的就是定義視圖,然后完成控制器的操作了。