热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【ExtJS】自定义组件datetimefield(一)

目的:ExtJS中提供了下拉日期选择控件Ext.form.field.Date与下拉时间选择控件Ext.form.field.Time。不过没有一个在选择日期时选择时间的控件dat

  目的:

  ExtJS中提供了下拉日期选择控件Ext.form.field.Date与下拉时间选择控件Ext.form.field.Time。不过没有一个在选择日期时选择时间的控件datetimefield。目的就是运用自定义组件的方法,来扩展下拉日期选择控件Ext.form.field.Date,在下拉框中添加时间选择的组件。目标效果:

       ,



第一步:继承Ext.picker.Date,创建My.picker.DateTime类

 1 Ext.define(‘My.picker.DateTime‘, {  
 2     extend: ‘Ext.picker.Date‘,
 3     alias: ‘widget.datetimepicker‘,
 4     okText:‘确定‘,
 5     okTip:‘确定‘,
 6   
 7     renderTpl: [
 8
, 9, 14 ‘‘, 15 ‘‘, 16, 17, 20 ‘‘, 21 ‘‘, 22 ‘‘, 23, 24 ‘{#:this.isEndOfWeek}‘, 25, 29 ‘‘, 30 ‘‘, 31
, 18
{.:this.firstInitial}
, 19
, 26 // The ‘#‘ is needed for keyboard navigation 27 ‘‘, 28
, 32, 33, 34, 35
, 36 { 37 firstInitial: function(value) { 38 return Ext.picker.Date.prototype.getDayInitial(value); 39 }, 40 isEndOfWeek: function(value) { 41 // convert from 1 based index to 0 based 42 // by decrementing value once. 43 value--; 44 var end = value % 7 === 0 && value !== 0; 45 return end ? ‘‘ : ‘‘; 46 }, 47 renderTodayBtn: function(values, out) { 48 Ext.DomHelper.generateMarkup(values.$comp.todayBtn.getRenderTree(), out); 49 }, 50 renderMonthBtn: function(values, out) { 51 Ext.DomHelper.generateMarkup(values.$comp.monthBtn.getRenderTree(), out); 52 } 53 } 54 ] 55 });

其中renderTpl部分与后面按钮渲染部分出自源码。

效果:

,


第二步:在原布局中添加3个spinner组件用来选取时、分、秒,添加一个确认按钮,并在组件渲染之前,将自定义添加的时、分、秒和确认按钮进行初始化

  1 Ext.define(‘My.picker.DateTime‘, {  
  2     extend: ‘Ext.picker.Date‘,
  3     alias: ‘widget.datetimepicker‘, 
  4     okText:‘确定‘,
  5     okTip:‘确定‘,
  6   
  7     renderTpl: [
  8
, 9, 14 ‘‘, 15 ‘‘, 16, 17, 20 ‘‘, 21 ‘‘, 22 ‘‘, 23, 24 ‘{#:this.isEndOfWeek}‘, 25, 29 ‘‘, 30 ‘‘, 31 32
, 18
{.:this.firstInitial}
, 19
, 26 // The ‘#‘ is needed for keyboard navigation 27 ‘‘, 28
, 33 ‘‘, 34 ‘‘, 35 ‘‘, 36 ‘‘, 37 ‘‘, 38
{%this.renderHourBtn(values,out)%}{%this.renderMinuteBtn(values,out)%}{%this.renderSecondBtn(values,out)%}
, 39 40, 41, 42, 43
, 44 { 45 firstInitial: function(value) { 46 return Ext.picker.Date.prototype.getDayInitial(value); 47 }, 48 isEndOfWeek: function(value) { 49 // convert from 1 based index to 0 based 50 // by decrementing value once. 51 value--; 52 var end = value % 7 === 0 && value !== 0; 53 return end ? ‘‘ : ‘‘; 54 }, 55 renderTodayBtn: function(values, out) { 56 Ext.DomHelper.generateMarkup(values.$comp.todayBtn.getRenderTree(), out); 57 }, 58 renderMonthBtn: function(values, out) { 59 Ext.DomHelper.generateMarkup(values.$comp.monthBtn.getRenderTree(), out); 60 }, 61 renderHourBtn: function(values, out) { 62 Ext.DomHelper.generateMarkup(values.$comp.hourBtn.getRenderTree(), out); 63 }, 64 renderMinuteBtn: function(values, out) { 65 Ext.DomHelper.generateMarkup(values.$comp.minuteBtn.getRenderTree(), out); 66 }, 67 renderSecondBtn: function(values, out) { 68 Ext.DomHelper.generateMarkup(values.$comp.secondBtn.getRenderTree(), out); 69 }, 70 renderOkBtn: function(values, out) { 71 Ext.DomHelper.generateMarkup(values.$comp.okBtn.getRenderTree(), out); 72 } 73 } 74 ], 75 beforeRender: function () { 76 var me = this,_$Number=Ext.form.field.Number; 77 me.hourBtn=new _$Number({ 78 minValue:0, 79 maxValue:23, 80 step:1, 81 width:55 82 }); 83 me.minuteBtn=new _$Number({ 84 minValue:0, 85 maxValue:59, 86 step:1, 87 width:70, 88 labelWidth:10, 89 fieldLabel:‘ ‘ 90 }); 91 me.secOndBtn=new _$Number({ 92 minValue:0, 93 maxValue:59, 94 step:1, 95 width:70, 96 labelWidth:10, 97 fieldLabel:‘ ‘ 98 }); 99 100 me.okBtn = new Ext.button.Button({ 101 ownerCt: me, 102 ownerLayout: me.getComponentLayout(), 103 text: me.okText, 104 tooltip: me.okTip, 105 tooltipType:‘title‘, 106 handler:me.okHandler, 107 scope: me 108 }); 109 me.callParent(); 110 } 111 });

效果:

,


 第三步:添加按钮事件绑定,各种内部逻辑的处理,获取选定的时间等等

【ExtJS】自定义组件datetimefield(一)


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
author-avatar
撩人无聊的青春
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有