最简单的ExtJS4的MVC实例

最简单的ExtJS4的MVC实例

从ExtJS4.0开始,ExtJS支持MVC架构,让前端开发者更好的实现数据与逻辑分离,使用

View, Controller, Model组件定义来完成浏览器前端业务。提高代码可以维护性。ExtJS中

的View是被动模式,被Controller持有。

一个最简单的基于ExtJS4的MVC的App实例,有Contoller, View, Model,Store等组成

其目录结构必须遵循以下结构:


每个ExtJS的应用都必须从创建一个Ext.app.Application实例开始,app/app.js创建一个Application实例

并完成初始化。name: 'USERS'表示命名空间为USERS,完全源代码如下:

Ext.Loader.setConfig({
 
    enabled: true
});
 
Ext.create('Ext.app.Application', {
 
    name: 'USERS',
    autoCreateViewport: false,
    controllers: ['Users'],
 
    launch: function() {
    	
    }
});
定义一个Controller

Controller将会绑定一个Application,Controller的真实目的是监听事件并作出合适的响应动作

通常这些事件来是View上面的用户操作。创建一个Controller为app/controller/Users.js

Ext.define('USERS.controller.Users', {
 
    extend: 'Ext.app.Controller',
 
    models: ['User'],
    stores: ['Users'],
    views: ['Panel', 'Grid'],
 
    init: function() {
        Ext.create('USERS.view.Panel', {
            layout: 'fit',
            height: 300,
            width: 500,
 
            items: {
                xtype: 'userlist'
            },
 
            renderTo: document.body
        });
 
        Ext.create('USERS.view.Grid').show();
    }
});
定义两个个View, app/view/Grid.js是创建EXT Grid View来显示数据

Ext.define('USERS.view.Grid' , {
 
    extend: 'Ext.grid.Panel',
    alias : 'widget.userlist',
    title : 'User Contact Info',
    store: 'Users', 
 
    columns: [{
        header: 'Name',
        dataIndex: 'name',
        flex: 1
    },{
        header: 'Email',
        dataIndex: 'email',
        flex: 1
    }]
});
app/view/Panel.js是创建EXT Panel View来构建Grid的layout

Ext.define('USERS.view.Panel', {
    extend: 'Ext.panel.Panel'
});
定义一个数据模型(data Model) app/model/User.js

Ext.define('USERS.model.User', {
 
    extend: 'Ext.data.Model',
    fields: ['id', 'name', 'email']
});
定义个数据存储(data store) app/store/User.js

var myData = [
        [1,	'gloomyfish', 'bfnh1998@hotmail.com'],
        [2,	'Bob Denoy', 'bobwindy@yahoo.com'],
        [3, 'Rose Kate', 'kittygroup@facebook.com']
];

Ext.define('USERS.store.Users', {
 
    extend: 'Ext.data.Store',
    model: 'USERS.model.User',
    autoLoad: true,
    data: myData
});
位于app同一层次的HTML页面代码如下:

<html> 
	<head> 
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
		<title id="page-title">Simple MVC Application</title> 
	    <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css">
	    <style type="text/css">
			body {
				margin-top: 30px;
				margin-right: 30px;
				margin-bottom: 30px;
				margin-left: 30px;
			}
		</style>
	    <script type="text/javascript" src="extjs/ext-all.js"></script>
		<script type="text/javascript" src="app/app.js"></script> 
	</head> 
	<body> 
	</body> 
</html>
运行效果如下:

参考引用 -http://www.sencha.com/learn/the-mvc-application-architecture/

2012-08-11


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值