EXT.js學(xué)習(xí)(MVC)

Ext JS鼓勵(lì)用戶利用結(jié)構(gòu)化的應(yīng)用程序架構(gòu)浙巫。
在我們的示例中潭流,我們使用MVC(模型/視圖/控制器)方法毙死。
這有助于我們將應(yīng)用程序的數(shù)據(jù)侵续,邏輯和視圖保存在單獨(dú)的孤島內(nèi)倔丈。

Ext.define('Employees', {
    extend: 'Ext.data.Store',
    alias: 'store.employees',

    data: [{
        "firstName": "Jean",
        "lastName": "Grey",
        "officeLocation": "Lawrence, KS",
        "phoneNumber": "(372) 792-6728"
    }, {
        "firstName": "Phillip",
        "lastName": "Fry",
        "officeLocation": "Lawrence, KS",
        "phoneNumber": "(318) 224-8644"
    }, {
        "firstName": "Peter",
        "lastName": "Quill",
        "officeLocation": "Redwood City, CA",
        "phoneNumber": "(718) 480-8560"
    }]
});

Ext.define('PopupForm', {
    extend: 'Ext.form.Panel',
    xtype: 'popupform',
    controller: 'popupform',

    title: 'Update Record',

    width: 300,
    floating: true,
    centered: true,
    modal: true,

    items: [{
        xtype: 'textfield',
        name: 'firstname',
        label: 'First Name',
        bind: '{employee.firstName}'

    }, {
        xtype: 'toolbar',
        docked: 'bottom',
        items: ['->', {
            xtype: 'button',
            text: 'Submit',
            iconCls: 'x-fa fa-check',
            handler: 'submitUpdate'
        }, {
            xtype: 'button',
            text: 'Cancel',
            iconCls: 'x-fa fa-close',
            handler: 'cancelUpdate'
        }]
    }]
});

Ext.define('PopupFormController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.popupform',

    cancelUpdate: function () {
        var view = this.getView();

        view.destroy();
    },

    submitUpdate: function(me) {
        var view = this.getView();

        view.destroy();
    }
});


Ext.define('MyListViewController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.listview',

    onPopupForm: function (view, index, item, record) {
        Ext.Viewport.add({
            xtype: 'popupform',
            width: 400,
            record: record,
            viewModel : {
                data: {
                    employee: record
                }
            }
        });
    }
});

Ext.application({
    name: 'Fiddle',

    launch: function() {

        Ext.Viewport.add({
            xtype: 'tabpanel',
            controller: 'listview',

            items: [{
                title: 'Employee Directory',
                xtype: 'grid',
                iconCls: 'x-fa fa-users',
                listeners: {
                    itemtap: 'onPopupForm'
                },
                store: {
                    type: 'employees'
                },
                columns: [{
                    text: 'First Name',
                    dataIndex: 'firstName',
                    flex: 1
                }, {
                    text: 'Last Name',
                    dataIndex: 'lastName',
                    flex: 1
                }, {
                    text: 'Phone Number',
                    dataIndex: 'phoneNumber',
                    flex: 1
                }]
            }, {
                title: 'About Sencha',
                iconCls: 'x-fa fa-info-circle'
            }]
        });

    }
});

MVC

在MVC架構(gòu)中,大多數(shù)類是模型状蜗,視圖或控制器需五。用戶與視圖交互,可以顯示模型中保存的數(shù)據(jù)轧坎。這些交互由Controller進(jìn)行監(jiān)視宏邮,然后Controller根據(jù)需要通過更新視圖和模型來響應(yīng)交互。

MVC的目標(biāo)是清楚地定義應(yīng)用程序中每個(gè)類的職責(zé)缸血。因?yàn)槊總€(gè)類都有明確的責(zé)任蜜氨,所以它們與大環(huán)境脫鉤。這使得應(yīng)用程序更容易測試和維護(hù)捎泻,并且其代碼更可重用飒炎。

類和繼承

我們已經(jīng)從簡單地創(chuàng)建組件切換到使用Ext.define方法定義新的組件類。
這些類通過指定其所需基類的“extend”屬性繼承其大部分功能笆豁。
我們選擇擴(kuò)展的類與我們以前創(chuàng)建的類相同郎汪。

正如你所看到的,我們在類定義中使用了extend闯狱。
這是一種創(chuàng)建自己的類的方法煞赢,該類繼承您要擴(kuò)展的類中的所有方法,屬性和配置選項(xiàng)哄孤。

所有Ext JS組件從Component類繼承屬性照筑。
這意味著組件具有一定的能力,傳遞給Ext JS框架中的所有可視組件。

例如凝危,TabPanel使用Component饭弓,Container和自身的所有能力,因?yàn)門abPanel擴(kuò)展了Container媒抠,而Container擴(kuò)展了Component弟断。
這被稱為繼承鏈。
這不是你必須完全理解趴生,但它是重要的認(rèn)識(shí)到它的存在阀趴,因?yàn)樗o你的視覺組件所有的超級(jí)大國存在于其層次結(jié)構(gòu)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苍匆,一起剝皮案震驚了整個(gè)濱河市刘急,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浸踩,老刑警劉巖叔汁,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異检碗,居然都是意外死亡据块,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門折剃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來另假,“玉大人,你說我怎么就攤上這事怕犁”呃海” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵奏甫,是天一觀的道長戈轿。 經(jīng)常有香客問我,道長阵子,這世上最難降的妖魔是什么思杯? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮款筑,結(jié)果婚禮上智蝠,老公的妹妹穿的比我還像新娘。我一直安慰自己奈梳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布解虱。 她就那樣靜靜地躺著攘须,像睡著了一般。 火紅的嫁衣襯著肌膚如雪殴泰。 梳的紋絲不亂的頭發(fā)上于宙,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天浮驳,我揣著相機(jī)與錄音,去河邊找鬼捞魁。 笑死至会,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谱俭。 我是一名探鬼主播奉件,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼昆著!你這毒婦竟也來了县貌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤凑懂,失蹤者是張志新(化名)和其女友劉穎煤痕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體接谨,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摆碉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脓豪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兆解。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖跑揉,靈堂內(nèi)的尸體忽然破棺而出锅睛,到底是詐尸還是另有隱情,我是刑警寧澤历谍,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布现拒,位于F島的核電站,受9級(jí)特大地震影響望侈,放射性物質(zhì)發(fā)生泄漏印蔬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一脱衙、第九天 我趴在偏房一處隱蔽的房頂上張望侥猬。 院中可真熱鬧,春花似錦捐韩、人聲如沸退唠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞧预。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間垢油,已是汗流浹背盆驹。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滩愁,地道東北人躯喇。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像硝枉,于是被迫代替她去往敵國和親廉丽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理檀咙,服務(wù)發(fā)現(xiàn)雅倒,斷路器,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法弧可,類相關(guān)的語法蔑匣,內(nèi)部類的語法,繼承相關(guān)的語法棕诵,異常的語法裁良,線程的語...
    子非魚_t_閱讀 31,631評(píng)論 18 399
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件校套、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評(píng)論 4 62
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,811評(píng)論 6 342
  • iOS設(shè)備上啟動(dòng)tcpdump比較方便价脾。apple在mac上有個(gè)叫rvi的程序,可以通過iOS設(shè)備的udid創(chuàng)建一...
    景超叔叔閱讀 967評(píng)論 0 0