Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Extjs 4.1.1在Datepicker中添加了新按钮,但其处理程序不工作_Javascript_Extjs_Extjs4_Datepicker_Extjs4.1 - Fatal编程技术网

Javascript Extjs 4.1.1在Datepicker中添加了新按钮,但其处理程序不工作

Javascript Extjs 4.1.1在Datepicker中添加了新按钮,但其处理程序不工作,javascript,extjs,extjs4,datepicker,extjs4.1,Javascript,Extjs,Extjs4,Datepicker,Extjs4.1,我在Ext.picker.Date中添加了新的close按钮,但未调用其处理程序。下面是我的代码的JSFIDLE链接 下面是该代码的一些详细信息 第12行-在选择器的renderTpl 第55行-在DOM中呈现关闭按钮的代码 第59行-initComponent方法创建了closeBtn的实例 下面是完整的代码 Ext.define('my.view.form.DatePicker', { extend: 'Ext.picker.Date', requires: [

我在
Ext.picker.Date
中添加了新的close按钮,但未调用其处理程序。下面是我的代码的JSFIDLE链接

下面是该代码的一些详细信息

第12行-在选择器的renderTpl 第55行-在DOM中呈现关闭按钮的代码 第59行-initComponent方法创建了
closeBtn
的实例

下面是完整的代码

Ext.define('my.view.form.DatePicker', {
    extend: 'Ext.picker.Date',
    requires: [
        'Ext.button.Button'],
    alias: 'widget.my-datepicker',
    msgTarget: 'none',

    monthYearText: '',
    ariaTitle: '',
    renderTpl: [
        '<div id="{id}-innerEl" role="grid">',
            '<div id="{id}-buttonsEl" class="{baseCls}-close-button-parent">{%this.renderCloseBtn(values, out)%}</div>',
            '<div role="presentation" class="{baseCls}-header">',
                '<div class="{baseCls}-prev"><a id="{id}-prevEl" href="#" role="button" title="{prevText}"></a></div>',
                '<div class="{baseCls}-month" id="{id}-middleBtnEl">{%this.renderMonthBtn(values, out)%}</div>',
                '<div class="{baseCls}-next"><a id="{id}-nextEl" href="#" role="button" title="{nextText}"></a></div>',
            '</div>',
            '<table id="{id}-eventEl" class="{baseCls}-inner" cellspacing="0" role="presentation">',
                '<thead role="presentation"><tr role="presentation">',
                '<tpl for="dayNames">',
                    '<th role="columnheader" title="{.}"><span>{.:this.firstInitial}</span></th>',
                '</tpl>',
                '</tr></thead>',
                '<tbody role="presentation"><tr role="presentation">',
                '<tpl for="days">',
                    '{#:this.isEndOfWeek}',
                    '<td role="gridcell" id="{[Ext.id()]}">',
                        '<a role="presentation" href="#" hidefocus="on" class="{parent.baseCls}-date" tabIndex="1">',
                            '<em role="presentation"><span role="presentation"></span></em>',
                        '</a>',
                    '</td>',
                '</tpl>',
                '</tr></tbody>',
            '</table>',
            '<tpl if="showToday">',
                '<div id="{id}-footerEl" role="presentation" class="{baseCls}-footer">{%this.renderTodayBtn(values, out)%}</div>',
            '</tpl>',
        '</div>', {
        firstInitial: function (value) {
            return Ext.picker.Date.prototype.getDayInitial(value);
        },
        isEndOfWeek: function (value) {
            // convert from 1 based index to 0 based
            // by decrementing value once.
            value--;
            var end = value % 7 === 0 && value !== 0;
            return end ? '</tr><tr role="row">' : '';
        },
        renderTodayBtn: function (values, out) {
            Ext.DomHelper.generateMarkup(values.$comp.todayBtn.getRenderTree(), out);
        },
        renderMonthBtn: function (values, out) {
            Ext.DomHelper.generateMarkup(values.$comp.monthBtn.getRenderTree(), out);
        },
        renderCloseBtn: function (values, out) {
            Ext.DomHelper.generateMarkup(values.$comp.closeBtn.getRenderTree(), out);
        }
    }],
    initComponent: function () {
        var me = this;
        me.closeBtn = new Ext.button.Button({
            ownerCt: me,
            ownerLayout: me.getComponentLayout(),
            text: 'C',
            handler: function () {
                debug.console('need code for close click');
                me.hide();
            },
            scope: me
        });
        me.callParent(arguments);
    },

    beforeRender: function () {
        var me = this;
        me.callParent(arguments);
        //me.monthBtn.removeListener('click', me.showMonthPicker);
        me.monthBtn = new Ext.button.Button({
            ownerCt: me,
            ownerLayout: me.getComponentLayout(),
            text: '',
            tooltip: me.monthYearText //,
        });


    },

    /**
     * Show the previous month.
     * @param {Object} e
     * @return {Ext.picker.Date} this
     */
    showPrevMonth: function (e) {
        if (Ext.Date.getFirstDateOfMonth(Ext.Date.add(this.activeDate, Ext.Date.MONTH, -1)) >= Ext.Date.getFirstDateOfMonth(this.minDate)) {
            return this.update(Ext.Date.add(this.activeDate, Ext.Date.MONTH, -1));
        }
    },

    /**
     * Show the next month.
     * @param {Object} e
     * @return {Ext.picker.Date} this
     */
    showNextMonth: function (e) {
        if ((Ext.Date.add(this.activeDate, Ext.Date.MONTH, 1) <= this.maxDate)) {
            return this.update(Ext.Date.add(this.activeDate, Ext.Date.MONTH, 1));
        }
    },

    /**
     * Respond to a date being clicked in the picker
     * @private
     * @param {Ext.EventObject} e
     * @param {HTMLElement} t
     */
    handleDateClick: function (e, t) {
        var me = this;
        if (Ext.fly(t.parentNode).hasCls(me.prevCls) || Ext.fly(t.parentNode).hasCls(me.nextCls)) {
            e.stopEvent();
        } else {
            me.callParent(arguments);
        }
    }
});


Ext.define('my.view.form.ifsdatefield', {
    extend: 'Ext.form.field.Date',
    alias: 'widget.my-datefield',
    msgTarget: 'none',
    preventMark: true,
    cls: 'ifs-datefield',
    initComponent: function () {
        var me = this;
        me.callParent(arguments);
    },

    createPicker: function () {
        var me = this,
            format = Ext.String.format;

        return new my.view.form.DatePicker({
            pickerField: me,
            ownerCt: me.ownerCt,
            renderTo: document.body,
            floating: true,
            cls: me.cls,
            ariaTitle: 'test',
            hidden: true,
            focusOnShow: true,
            minDate: me.minValue,
            maxDate: me.maxValue,
            disabledDatesRE: me.disabledDatesRE,
            disabledDatesText: me.disabledDatesText,
            disabledDays: me.disabledDays,
            disabledDaysText: me.disabledDaysText,
            format: me.format,
            showToday: me.showToday,
            startDay: me.startDay,
            minText: format(me.minText, me.formatDate(me.minValue)),
            maxText: format(me.maxText, me.formatDate(me.maxValue)),
            msgTarget: 'none',
            width: 220,
            height: 265,
            listeners: {
                scope: me,
                select: me.onSelect
            },
            keyNavConfig: {
                esc: function () {
                    me.collapse();
                }
            }
        });
    }
});

Ext.create('Ext.form.Panel', {
    renderTo: Ext.getBody(),
    width: 300,
    bodyPadding: 10,
    title: 'Dates',
    items: [{
        xtype: 'my-datefield',
        anchor: '100%',
        fieldLabel: 'From',
        name: 'from_date',
        minValue: Ext.Date.add(new Date(), Ext.Date.YEAR, -5),
        maxValue: Ext.Date.add(new Date(), Ext.Date.YEAR, 1),
        value: Ext.Date.clearTime(new Date(), false),
        editable: false
    }]
});
Ext.define('my.view.form.DatePicker'{
扩展:“Ext.picker.Date”,
要求:[
“Ext.button.button'],
别名:“widget.my datepicker”,
msgTarget:'无',
monthYearText:“”,
标题:'',
renderTpl:[
'',
“{%this.renderCloseBtn(值,输出)%}”,
'',
'',
“{%this.renderMonthBtn(值,输出)%}”,
'',
'',
'',
'',
'',
“{.:this.firstInitial}”,
'',
'',
'',
'',
“{#:this.isEndOfWeek}”,
'',
'',
'',
'',
'',
'',
'',
“{%this.renderTodayBtn(值,输出)%}”,
'',
'', {
firstInitial:函数(值){
返回Ext.picker.Date.prototype.getDayInitial(值);
},
isEndOfWeek:函数(值){
//从基于1的索引转换为基于0的索引
//通过将值递减一次。
价值--;
var end=value%7==0&&value!==0;
返回结束?“”:“”;
},
renderTodayBtn:函数(值,输出){
Ext.DomHelper.generateMarkup(值$comp.todayBtn.getRenderTree(),out);
},
renderMonthBtn:函数(值,输出){
Ext.DomHelper.generateMarkup(值$comp.monthBtn.getRenderTree(),out);
},
renderCloseBtn:函数(值,输出){
Ext.DomHelper.generateMarkup(值$comp.closeBtn.getRenderTree(),out);
}
}],
initComponent:函数(){
var me=这个;
me.closeBtn=新的Ext.button.button({
所有者:我,
ownerLayout:me.getComponentLayout(),
文本:“C”,
处理程序:函数(){
控制台('需要关闭单击代码');
我藏起来了;
},
范围:我
});
me.callParent(参数);
},
beforeRender:函数(){
var me=这个;
me.callParent(参数);
//me.monthBtn.removeListener('click',me.showMonthPicker);
me.monthBtn=新的Ext.button.button({
所有者:我,
ownerLayout:me.getComponentLayout(),
文本:“”,
工具提示:me.monthYearText/,
});
},
/**
*显示上个月。
*@param{Object}e
*@return{Ext.picker.Date}
*/
showPrevMonth:函数(e){
if(Ext.Date.getFirstDateOfMonth(Ext.Date.add(this.activeDate,Ext.Date.MONTH,-1))>=Ext.Date.getFirstDateOfMonth(this.minDate)){
返回this.update(Ext.Date.add(this.activeDate,Ext.Date.MONTH,-1));
}
},
/**
*显示下个月。
*@param{Object}e
*@return{Ext.picker.Date}
*/
showNextMonth:功能(e){

如果((Ext.Date.add)(this.activeDate,Ext.Date.MONTH,1)嗯,聪明的尝试。你刚刚错过了。非常感谢。它现在可以工作了。如果在这里发布之前我在这方面浪费了很多时间,我应该昨天就完成。