在演示应用中,我们已经创建好了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: [{, selector:'content'}],init: function(){this.control({'treemenu' : {itemclick: this.treeHandle}});},treeHandle: function(view, record){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

转载于:https://www.cnblogs.com/amunote/p/3754204.html

ExtJS MVC 学习手记3相关推荐

  1. ExtJS MVC学习手记 1

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

  2. MVC 学习日志1(上)

    MVC 学习日志1(上) 2012.7.5 开始学习MVC,本以为这个框架多难学,学下来的感受是其实也就是编写格式而已,和普通的webform有质的区别.顿时理解那句老话,世上无难事,只怕有心人.只要 ...

  3. Extjs——初步学习

        最近在系统学习Extjs框架,从刚一开始接触Extjs到现在发现对Extjs越来越喜欢了.刚开始只是想在页面上实现一个展示大量图片的功能,就像在线订餐系统展示菜单的效果那样,每幅图片上都有一些 ...

  4. Spring MVC 学习笔记 对locale和theme的支持

    Spring MVC 学习笔记 对locale和theme的支持 Locale Spring MVC缺省使用AcceptHeaderLocaleResolver来根据request header中的 ...

  5. AM335X的汇编语言与c语言,X86汇编语言学习手记 -- 汇编和C协同

    X86汇编语言学习手记(3) 2004年12月 在X86汇编语言学习手记(1)(2)中,可以看到栈(Stack)作为进程执行过程中数据的临时存储区域,通常包含如下几类数据: 局部变量 函数调用的返回地 ...

  6. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    Spring MVC 学习总结(二)--控制器定义与@RequestMapping详解 目录 一.控制器定义 1.1.实现接口Controller定义控制器 1.2.使用注解@Controller定义 ...

  7. webpack入门学习手记(一)

    本人微信公众号:前端修炼之路,欢迎关注. 之前用过gulp.grunt,但是一直没有学习过webpack.这两天刚好有时间,学习了下webpack.webpack要想深入研究,配置的东西比较多,网上的 ...

  8. ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python)

    ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python) ROS学习手记 - 2.1: Create and Build ROS Package ...

  9. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)...

    Spring MVC 学习总结(九)--Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务) 目录 一.JSON 1.1.概要 1.2.使用ModelAndView ...

最新文章

  1. IntelliJ IDEA 自动编译功能无法使用,On 'update' action:选项里面没有update classes and resources这项...
  2. python package_Python之package、module
  3. Big Data Security Part One: Introducing PacketPig
  4. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...
  5. [转]使用target_system进行erlang应用的发行
  6. 第二阶段 站立会议 02
  7. 小规模流处理kata。 第1部分:线程池
  8. 新闻数据采集php,PHP新闻采集在线源码
  9. 信息学奥赛一本通 1156:求π的值
  10. redis aof持久化
  11. C语言程序设计,第四版 ,谭浩强。绝对原版,最新的资料
  12. python自定义模块与模块调用
  13. maple的Linux安装步骤,[原创]CentOS6.0下安装Freeiris2/Asterisk全程指导教程
  14. 如何查看浏览器的DNS 缓存信息
  15. python中reduce是什么意思_Python----reduce原来是这样用的
  16. <转>svn提示出错异常为remains in conflict
  17. QGraphicsItem图元拖动绘制(二)
  18. python3--日期时间处理最近n个自然周计算
  19. 广告位招租C: City
  20. 百度地图标注不能清除问题(点聚合)

热门文章

  1. 文件及文件组备份与还原示例.sql
  2. iOS根据图片url获取尺寸
  3. java 微信支付实现
  4. struts 的 MVC ,自己堆栈跟踪(可以跟着做一遍)
  5. oracle中关于删除表purge语句和闪回语句的基本使用
  6. Request.Browser.Crawler 属性的工作原理分析
  7. php数组foreach循环添加键值对_php 给数组增加键值对
  8. matlab神经网络工具箱创建神经网络,matlab神经网络工具箱创建神经网络
  9. at java.net.urlclassloader.findclass_如何使用URLClassLoader加载* .class文件?
  10. mysql值域_MySQL学习笔记(三)