最简单的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