EXT.js學習(MVC)

Ext JS鼓勵用戶利用結構化的應用程序架構。
在我們的示例中,我們使用MVC(模型/視圖/控制器)方法。
這有助于我們將應用程序的數據,邏輯和視圖保存在單獨的孤島內。

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架構中,大多數類是模型,視圖或控制器。用戶與視圖交互,可以顯示模型中保存的數據。這些交互由Controller進行監(jiān)視,然后Controller根據需要通過更新視圖和模型來響應交互。

MVC的目標是清楚地定義應用程序中每個類的職責。因為每個類都有明確的責任,所以它們與大環(huán)境脫鉤。這使得應用程序更容易測試和維護,并且其代碼更可重用。

類和繼承

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

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

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

例如,TabPanel使用Component,Container和自身的所有能力,因為TabPanel擴展了Container,而Container擴展了Component。
這被稱為繼承鏈。
這不是你必須完全理解,但它是重要的認識到它的存在,因為它給你的視覺組件所有的超級大國存在于其層次結構。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,647評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,740評論 18 399
  • 發(fā)現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,426評論 4 61
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,281評論 6 342
  • iOS設備上啟動tcpdump比較方便。apple在mac上有個叫rvi的程序,可以通過iOS設備的udid創(chuàng)建一...
    景超叔叔閱讀 1,049評論 0 0

友情鏈接更多精彩內容