我继承了一个使用ExtJS的应用程序,并且相对不熟悉它的约定。
我有一个时间输入的选择框,默认为传入的时间。是否可以为默认值设置selected = selected?目前显示默认时间,但是当您单击该框时,选项列表默认为第一个值(因此,如果默认为下午2点,当您单击以选择另一个时间时,您将被带到上午12点而不是下午2点)。
代码:
{
xtype: 'timefield',
id: 'timeselect',
name: 'starttime',
fieldLabel: 'Start Time',
labelWidth: 80,
labelAlign: 'right',
width: 160,
minValue: '12:00 AM',
maxValue: '11:55 PM',
value: MyApp.config.AppConfig.time, //Current time rounded to hour
increment: 15
},
谢谢!
修改:澄清一下。选择框显示页面加载时的正确时间。但是当用户点击选择时,它们将被带到选项列表的开头(在这种情况下是凌晨12:00)。我希望将选项列表默认为所选时间(类似于)。谢谢!
编辑#2:该应用程序使用v4.0.7
答案 0 :(得分:2)
解决方案很简单:升级你的Ext版本!不那么简单吗?同时修补它。我必须承认,我试图将Ext.form.field.Time
的v4.2代码复制到the fiddle。那没用。这是一个更清洁的方法:
Ext.define('Ext.ux.fix.Ext.form.field.Time.CurrentSelectionOnExpand', {
override: 'Ext.form.field.Time'
,initComponent: function() {
this.callParent();
this.on({
scope: this
,delay: 1 // let render
,expand: function() {
this.highlightCurrent();
}
});
}
// copied from Ext.view.BoundListKeyNav.method#highlightAt()
,highlightCurrent: function() {
var me = this,
picker = me.picker,
index = picker.store.find('disp', me.getRawValue()),
item = picker.all.item(index)
if (item) {
item = item.dom;
picker.highlightItem(item);
picker.getTargetEl().scrollChildIntoView(item, false);
}
}
});