gpt4 book ai didi

Extjs: (TimeField) 重置 minValue 和 maxValue

转载 作者:行者123 更新时间:2023-12-04 23:09:11 33 4
gpt4 key购买 nike

我有一个 ExtJS TimeField我在哪里使用 setMinValue(...)setMaxValue(...)仅向用户显示有效的时间元素。这工作得很好,但我如何重置 minValuemaxValue以便用户可以再次看到所有的时间元素?

我不想清除该字段,只需再次显示商店中的所有元素。

最佳答案

我没有看到任何“干净”的方法来实现这一点,但我确实有一个临时的解决方法,直到你找到更合适的方法。

尝试设置 TimeFieldminValuemaxValueundefinednull ,然后调用generateStore()在您的 TimeField 上:

    // private
generateStore: function(initial){
var min = this.minValue || new Date(this.initDate).clearTime(),
max = this.maxValue || new Date(this.initDate).clearTime().add('mi',
(24 * 60) - 1),
times = [];

while(min <= max){
times.push(min.dateFormat(this.format));
min = min.add('mi', this.increment);
}
this.bindStore(times, initial);
},

是的,它是一个私有(private)方法,所以通常你不应该使用它,但是如果你简单地重置 minValue 或 maxValue,通常会调用该方法,所以你只是跳过了一个步骤。通过将两个属性都设置为 null, var min, max = 的声明将等于默认值。你不能通过调用 setMinValue() 来解决这个问题。或 setMaxValue()因为它使用了一个私有(private)方法,该方法试图从您传递给方法的值中解析出 Date (它将在解析 null 时失败):
    // private
setLimit: function(value, isMin, initial){
var d;
// will fail here
if(Ext.isString(value)){
d = this.parseDate(value);
// will fail as well
}else if(Ext.isDate(value)){
d = value;
}
// will never make it here, because 'd' wasn't set above
if(d){
var val = new Date(this.initDate).clearTime();
val.setHours(d.getHours(), d.getMinutes(), d.getSeconds(),
d.getMilliseconds());
this[isMin ? 'minValue' : 'maxValue'] = val;
if(!initial){
this.generateStore();
}
}
}

更新:

更简洁的方法是扩展 TimeField并添加 resetMinAndMax完成上述操作的方法(将 minValue/maxValue 设置为 null,调用生成存储),或在覆盖中添加该方法。这样你就可以避免调用“私有(private)” generateStore()到处。

关于Extjs: (TimeField) 重置 minValue 和 maxValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4813842/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com