Extjs mvc

MVC的模式,模型(Models)和控制器(Controllers)

 

Model模型 是字段和它们的数据的集合,例如User模型带有usernamepassword字段,模型知道如何持久化自己的数据,并且可以和其他模型关联,模型跟ExtJS 3 中的Record类有点像(区别是,Record只是单纯的扁平结构,而Model可以nest),通常都用在Store中去展示grid和其他组件的数据

 

View视图 是组件的一种,专注于界面展示 - grid, tree, panel 都是view

 

Controllers控制器 一个安放所有使你的app正确工作的代码的位置,具体一点应该是所有动作,例如如何渲染view,如何初始化model,和app的其他逻辑

 

目录结构如下图所示:

 

 

 

index.html 文件如下:

<!DOCTYPE html>

<html lang="en">

<head>

     <meta charset="UTF-8">

     <title></title>

     <link rel="stylesheet" href="../resources/css/ext-all.css">

     <script type="text/javascript " src="../bootstrap.js"></script>

     <script type="text/javascript" src="app.js"></script>

</head>

<body>

</body>

</html>

 

Ext.app.application

代表整个应用

Ext.container.Viewport

       Viewport渲染自身到网页的documet body区域, 并自动将自己调整到适合浏 览器窗口的大小,

在窗口大小发生改变时自动适应大小,

继承于 Ext.Component

app.js 文件如下:

Ext.application({

//  动态加载 这个类。

     requires: ['Ext.container.Viewport'],

// 这个应用的名字。

     name: 'FWY',

// 应用程序的路径

     appFolder: 'app',

// 应用程序控制器名称

     controllers: ['Students'],

       // 页面 装载完成后自动调用。

     launch: function () {

         Ext.create('Ext.container.Viewport',{

//  布局

             layou:'fit',

             items: [{

                 xtype: 'studentlist'

             }]

         })

     }

});

 

 

View 定义一个视图。

 

Ext.define('FWY.view.student.List', {

    extend: 'Ext.grid.Panel',

    alias: 'widget.studentlist',

    store: 'Students',

    title: '学生信息列表',

    initComponent: function () {

        this.columns = [

            {header: '编号', dataIndex: 'id', flex:1},

            {header: '姓名', dataIndex: 'name', flex:1},

            {header: '年龄', dataIndex: 'age', flex:1},

            {header: '性别', dataIndex: 'sex', flex:1}

        ];

        this.callParent(arguments);

    }

});

 

创建一个model 文件

 

Ext.define('FWY.view.student.List', {

    extend: 'Ext.grid.Panel',

    alias: 'widget.studentlist',

    store: 'Students',

    title: '学生信息列表',

    initComponent: function () {

        this.columns = [

            {header: '编号', dataIndex: 'id', flex:1},

            {header: '姓名', dataIndex: 'name', flex:1},

            {header: '年龄', dataIndex: 'age', flex:1},

            {header: '性别', dataIndex: 'sex', flex:1}

        ];

        this.callParent(arguments);

    }

});

 

controller  层 创建文件

Ext.define('FWY.controller.Students', {

    extend: 'Ext.app.Controller',

    views: [

        'student.List',

        'student.Edit'

    ],

    stores: ['Students'],

    models: ['Students'],

    init: function () {

        this.control({

            'studentlist': {

                itemdblclick: this.editStudent

            },

            'studentedit button[action = save]' : {

                click: this.updateStudent

            }

        });

    },

    onPanelRendered:function() {

        console.log("panel rendered!");

    },

    updateStudent: function(button) {

        // 获取window 下面的 下面的 按钮, 提交。

       var win = button.up('window'),

           form = win.down('form'),

           record = form.getReader()

    },

    editStudent: function (grid,record) {

        //  通过别名获得这个组件

        var view = Ext.widget('studentedit');

        // 这个对象向下查找 form 组件,自动赋值

        view.down('form').loadRecord(record);

    }

});

 

store 创建文件。

Ext.define('FWY.store.Students',{

    extend: 'Ext.data.Store',

    model:'FWY.model.Students',

    data: [

        {id:1,name:'zhangsan', age:18,sex:'boy'},

        {id:2,name:'lisi', age:20,sex:'gril'}

    ]

});

       demo 下载 https://github.com/ningmengxs/Extjs.git


更多专业前端知识,请上 【猿2048】www.mk2048.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值