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

Model模型 是字段和它们的数据的集合,例如User模型带有username和password字段,模型知道如何持久化自己的数据,并且可以和其他模型关联,模型跟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'}

]

});

Extjs mvc的更多相关文章

  1. Extjs MVC学习随笔01

    Extjs Mvc模式下的整个MVC框架体系即下图: 包含了Controller(实现方法层),Store(数据来源管理层),View(页面布局层).之所以用MVC我想是因为减轻针对某一页面的单一的J ...

  2. Extjs MVC开发模式详解

    Extjs MVC开发模式详解   在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...

  3. ExtJS MVC学习手记 2

    开发环境 eclipse(indigo) ExtJS4.0 开发目标 使用store.model和controller创建菜单树 开发步骤 之前我们已经建立了一个MVC的项目框架.现在要做的就是在这个 ...

  4. ExtJS MVC学习手记 1

    开发环境: ExtJS4.2 eclipse indigo 开发目标  搭建项目框架,创建viewport 开发步骤说明 这次主要使用extjs4的mvc模式创建viewport.籍此初步了解mvc模 ...

  5. ExtJS MVC学习手记

    开始学习ExtJS的MVC了.这篇文章仅是用来做一个目录,为自己这个阶段的学习内容做个索引. 手记涉及的文章: EXTJS MVC结构(译自ExtJS4.0文档中的<MVC Architectu ...

  6. Extjs MVC模式开发,循序渐进(一)

    本文讲述extjs mvc的Helloworld,tabPanel,event,页面布局layout等内容. 本页包含:MVC模式案例(一)~MVC模式案例(六),从搭建extjs mvc到点击按钮生 ...

  7. ExtJS MVC结构

    概述 大型的应用在开发和运维上都存在着困难.应用功能的调整和开发人员的调动都会影响对项目的掌控.ExtJS4带来了一种新的应用结构.这种结构不止用于组织代码,也能有效的减少必要的代码量. 这次ExtJ ...

  8. Flux和ExtJS MVC框架的异同点介绍

    Flux是Facebook在现有MVC框架数据流动复杂,难以设计和维护大型的前端应用的情况下设计的一种新的数据架构协议.叫做协议是因为Flux本身就像MVC一样,规定了一种机制,但是Facebook提 ...

  9. Extjs MVC模式

    最近在学习Extjs,发现他可以使用MVC模式,不但可以组织代码,而且可以 减少实现的内容,模型(Models)和控制器(Controllers)也被引入其中. Model模型是字段和它们的数据的集合 ...

随机推荐

  1. 【转】int && 非常量右值

    C++ 11中引入的右值引用正好可用于标识一个非常量右值.C++ 11中用&表示左值引用,用&&表示右值引用,如: int &&a = 10 右值引用根据其修饰 ...

  2. 图解 Monad

    原文地址: http://www.ruanyifeng.com/blog/2015/07/monad.html

  3. Uber广州车主官网本周将暂关闭

    Uber广州车主官网本周将暂关闭 http://news.southcn.com/g/2015-05/04/content_123509931.htm

  4. IOS开发中使用CNContact\CNMutableContact 对通讯录增删改查

    IOS开发中使用CNContact\CNMutableContact 对通讯录增删改查 首先当然是把CNcontact包含在工程中: @import Contacts; 1.下面是增加联系人的程序段: ...

  5. 饼干是这样压缩的——PHP使用zlib扩展实现页面GZIP压缩输出

    饼干是这样压缩的——PHP使用zlib扩展实现页面GZIP压缩输出 GZIP(GNU-ZIP)是一种压缩技术.经过GZIP压缩后页面大小可以变为原来的30%甚至更小.这样用户浏览的时候就会感觉很爽很愉 ...

  6. BZOJ2720: [Violet 5]列队春游

    2720: [Violet 5]列队春游 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 173  Solved: 125[Submit][Status] ...

  7. JSON详解(转载)

    JSON详解 阅读目录 JSON的两种结构 认识JSON字符串 在JS中如何使用JSON 在.NET中如何使用JSON 总结 JSON的全称是”JavaScript Object Notation”, ...

  8. C# 存储过程使用方法

                CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OU ...

  9. 属性(Attribute)资源

    前面已经介绍过自定义View组件的开发,自定义View组件与Android系统提供的View组件一样,即可在Java代码中使用,也可在XML界面布局代码中使用. 当在XML布局文件中使用Android ...

  10. 《R包的分类介绍》

    R分析空间数据(Spatial Data) R机器学习包(Machine Learning) R多元统计包(Multivariate Statistics) R药物(代谢)动力学数据分析包 R计算计量 ...