• 【ExtJS】自定义组件datetimefield(二)


      


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


    第三步:添加按钮事件绑定,获取选定的时间

     1     privates:{
     2         finishRenderChildren: function () {  
     3             var me = this;  
     4             me.hourBtn.finishRender();  
     5             me.minuteBtn.finishRender();  
     6             me.secondBtn.finishRender();  
     7             me.okBtn.finishRender();  
     8                me.callParent();  
     9         }
    10     }, 
    11  
    12     okHandler : function(){  
    13         var me = this,  
    14             btn = me.okBtn;  
    15   
    16         if(btn && !btn.disabled){  
    17             me.setValue(this.getValue());  
    18             me.fireEvent('select', me, me.value);  
    19             me.onSelect();  
    20         }  
    21         return me;  
    22     },  
    23     setValue : function(date, isfixed){  
    24         var me = this;  
    25         if(isfixed!==true){  
    26             date.setHours(me.hourBtn.getValue());  
    27             date.setMinutes(me.minuteBtn.getValue());  
    28             date.setSeconds(me.secondBtn.getValue());  
    29         }  
    30         me.value=date;  
    31         me.update(me.value);  
    32         return me;  
    33     }

    第四步:建新类My.form.field.DateTime,继承Ext.form.field.Date,修改其picker为自定义picker 

     1 Ext.define('My.form.field.DateTime', {  
     2     extend:'Ext.form.field.Date',  
     3     alias: 'widget.datetimefield',  
     4     requires: ['My.picker.DateTime'],  
     5   
     6     format : "Y-m-d H:i:s",  
     7    
     8     altFormats : "Y-m-d H:i:s",  
     9   
    10     createPicker: function() {  
    11         var me = this,  
    12             format = Ext.String.format;  
    13    
    14         return new Go.picker.DateTime({  
    15             pickerField: me,
    16             ownerCt: me.ownerCt,  
    17             renderTo: document.body,  
    18             floating: true,  
    19             hidden: true,  
    20             focusOnShow: true,  
    21             minDate: me.minValue,  
    22             maxDate: me.maxValue,  
    23             disabledDatesRE: me.disabledDatesRE,  
    24             disabledDatesText: me.disabledDatesText,  
    25             disabledDays: me.disabledDays,  
    26             disabledDaysText: me.disabledDaysText,  
    27             format: me.format,  
    28             showToday: me.showToday,  
    29             startDay: me.startDay,  
    30             minText: format(me.minText, me.formatDate(me.minValue)),  
    31             maxText: format(me.maxText, me.formatDate(me.maxValue)),  
    32             listeners: {  
    33                 scope: me,  
    34                 select: me.onSelect  
    35             },  
    36             keyNavConfig: {  
    37                 esc: function() {  
    38                     me.collapse();  
    39                 }  
    40             }  
    41         });  
    42     }
    43 });  

    第五步:调用My.form.field.Date呈现效果

    1 Ext.onReady(function(){
    2     Ext.create('My.form.field.DateTime',{  
    3                 renderTo:Ext.getBody(),  
    4                 fieldLabel:'日期选择器',  
    5                 value:'2013-04-27 12:12:12',  
    6                 format:'Y-m-d H:i:s'  
    7             });  
    8 });

    效果:



    总结:

      这个扩展组件主要参考了源码中组件继承与实现的方法,虽然达成了预期效果,不过使用体验并不太好,还有很多问题需要解决,下一步就是完善这些方法。

      在这个学习过程中,参考了很多别人的例子,从中能够学到很多。很多方法在api中解释很简单,网上也查不到使用的方法,而往往能在查看源码的过程中了解到该方法的作用与用途,这就体现了参考源码的重要性。

      多查看api与源码,更快提高,更快进步。

  • 相关阅读:
    JavaSE:和网络相关的协议
    随机产生四位,任意位或者范围数字方法
    随机产生四位,任意位或者范围数字方法
    如何保留小数精度
    如何保留小数精度
    JDK开发环境搭建及环境变量配置详细教程
    JDK开发环境搭建及环境变量配置详细教程
    排序算法
    html中a标签如何设置行宽高
    MyEclipse10破解详细说明
  • 原文地址:https://www.cnblogs.com/linxiong945/p/3979465.html
Copyright © 2020-2023  润新知