ExtJS MVC 学习手记3
在演示应用中,我们已经创建好了viewport,并为之添加了一个菜单树。但也仅仅是这样,点击树或应用的其他地方获得不到任何响应。这个演示应用还是一个死的应用。
接下来,我们让这个应用活起来。
首先,给树添加一个点击事件。以前的做法是使用listener属性,添加事件监听及处理函数。现在的做法也是采用了类似的方法,修改MenuController.js:
Ext.define('demo.controller.MenuController', {
extend: 'Ext.app.Controller',
stores: ['MenuStore'],
model: ['MenuModel'],
views: ['TreeMenu'],
init: function(){
this.control({
'treemenu' : {
itemclick: this.treeHandle
}
});
},
treeHandle: function(view, record){
alert(record.data.text);
}
});
我们使用了controller的init函数。init函数在应用启动时就开始执行,通常它会和control函数一起使用来实现事件的监听和处理。在control函数中我们再次使用了选择器以找到要添加事件的对象。
点击树的节点,效果如下:

实现了事件的响应还不够。在平时的开发中经常需要实现的功能是:点击左侧菜单,在右侧内容面板中做出适当响应。
为了实现这个目标,我们先对json数据及model做些调整。
修改后的menu.json:
{
children: [{
id: 1,
text: '用户管理',
leaf: false,
expanded: true,
children: [{
id: 11,
pid: 1,
text: '角色管理',
leaf: true
},{
id: 12,
pid: 1,
text: '信息管理',
leaf: true
}]
},{
id: 2,
text: '系统管理',
leaf: false,
expanded: true,
children: [{
id: 21,
pid: 2,
text: '数据字典管理',
leaf: true
},{
id: 22,
pid: 2,
text: '日志管理',
leaf: true
}]
}]
}
我们在json数据中添加了id和pid属性。相应的model也要做出调整。MenuModel.js:
Ext.define('demo.model.MenuModel', {
extend: 'Ext.data.Model',
fields: ['id', 'pid', 'text', 'leaf']
});
再添加一个内容视图Content.js:
Ext.define('demo.view.Content', {
extend: 'Ext.panel.Panel',
alias: 'widget.content',
title: '系统内容',
margins: '5 5 5 0',
layout: 'form',
defaults: {xtype: 'displayfield', labelAlign:'right', labelWidth:120}
});
接下来,继续对MenuController作出调整:
Ext.define('demo.controller.MenuController', {
extend: 'Ext.app.Controller',
stores: ['MenuStore'],
model: ['MenuModel'],
views: ['TreeMenu'],
refs: [{ref:'content', selector:'content'}],
init: function(){
this.control({
'treemenu' : {
itemclick: this.treeHandle
}
});
},
treeHandle: function(view, record){
var content = this.getContent();
content.removeAll();
content.add({
fieldLabel: 'ID',
value: record.data.id
},{
fieldLabel: 'TEXT',
value: record.data.text
});
}
});
调整的地方有两处:使用了refs属性,修改了点击事件响应函数treeHandle。需要说明下的是refs属性。使用refs属性可以获取对象的引用。在上面的配置中“refs: [{ref:'content', selector:'content'}]”产生了一个getContent()方法,这个方法会去寻找选择器‘content’对应的对象。
看一下运行效果:

点击左侧的菜单树,在右侧的内容面板中会有相应的提示。
效果还是很简单。不过了解了这些,应该可以自己动手去实现应用了。
关于MVC的学习手记可以于此告终了。
项目代码下载:http://download.csdn.net/detail/tianxiexingyun/7405471
ExtJS MVC 学习手记3的更多相关文章
- ExtJS MVC学习手记
开始学习ExtJS的MVC了.这篇文章仅是用来做一个目录,为自己这个阶段的学习内容做个索引. 手记涉及的文章: EXTJS MVC结构(译自ExtJS4.0文档中的<MVC Architectu ...
- ExtJS MVC学习手记 2
开发环境 eclipse(indigo) ExtJS4.0 开发目标 使用store.model和controller创建菜单树 开发步骤 之前我们已经建立了一个MVC的项目框架.现在要做的就是在这个 ...
- ExtJS MVC学习手记 1
开发环境: ExtJS4.2 eclipse indigo 开发目标 搭建项目框架,创建viewport 开发步骤说明 这次主要使用extjs4的mvc模式创建viewport.籍此初步了解mvc模 ...
- Extjs MVC学习随笔01
Extjs Mvc模式下的整个MVC框架体系即下图: 包含了Controller(实现方法层),Store(数据来源管理层),View(页面布局层).之所以用MVC我想是因为减轻针对某一页面的单一的J ...
- Linux.NET学习手记(7)
前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在 ...
- Linux.NET学习手记(8)
上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这 ...
- EF框架学习手记
转载: [ASP.NET MVC]: - EF框架学习手记 1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架 ...
- Extjs MVC模式开发,循序渐进(一)
本文讲述extjs mvc的Helloworld,tabPanel,event,页面布局layout等内容. 本页包含:MVC模式案例(一)~MVC模式案例(六),从搭建extjs mvc到点击按钮生 ...
- .NET MVC 学习笔记(二)— Bootstrap框架
二..NET MVC 学习笔记(一)—— Bootstrap框架 在实际开发过程中,页面的样式问题是让人很头疼的问题,良好的用户界面可以大大提高用户体检,而在你没有前端开发人员的火力支援情况下,并不是 ...
随机推荐
- 再看.net本质
1.[资源的地址-通用资源标识符] 我们在地址栏中输入的内容称为通用资源标识符(Universal Resource Identifier,URI),它有很多种形式,在Web中我们通常使用称为统一资源 ...
- PAT1075. PAT Judge
//终于A了,不难却觉着坑多的的题,注意-1的处理,感觉我是受memset置0的束缚了,可以把初试成绩置-1.就不用debug怎么久,注意对于-1的处理,不然漏洞百出 #include<cstd ...
- centos atomic host第一次启动
centos atomic host安装完成会,第一次启动时会调用cloud-init等服务.这是个什么东东? cloud-init用于在创建虚拟机时通过元数据服务对虚拟机基本配置,包括常见的主机名, ...
- mount挂载
与ln -s 功能类似 # mount --bind /data/public /home/user/public /etc/fstab # <file system> <mount ...
- 分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
转自:http://blog.sina.com.cn/s/blog_48964b12010157p0.html 配置错误说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息 ...
- Oracle小数点格式化
1. select to_char(123456789.12345,'fm999999990.99') from dual; 如果fm后位数不足则会显示 ## select to_char(12345 ...
- 新手浅谈C#Task异步编程
Task是微软在.net framework 4.0发布的新的异步编程的利器,当然4.5新增了async.await,这儿我们先说Task相关. 在实际编程中,我们用的较多的是Task.Task.Fa ...
- app打包流程
1.什么是打包 将应用程序统一放在一个后缀是ipa的文件中,然后发给其他人,可以安装在手机上供用户或测试人员安装 2.可安装ipa的前提 ①说清楚是哪一个应用程序(App Id) ②可以安装在哪一台设 ...
- 新建一个DataTable如何手动给其添加多条数据!
早晨起来,想起昨天利用winform做类似于sqlserver数据库导入数据功能的时候,用到了新建一个DataTable手动给其添加多条数据,平时用不到,需要的时候想不起来了,这次不妨把他记下来.以下 ...
- winform中嵌入Ppt、Word、Excel
1.下载DsoFramer_KB311765_x86.exe 2.安装,默认路径安装C:\DsoFramer. 3.注册:开始菜单——>运行 输入:regsvr32 C:\DsoFramer\d ...