目前我正在從ExtJS 4.2到ExtJS 5.1的代碼遷移工作。我發現許多組件的默認行爲有很多變化。如何修復Extjs 5.1中的默認標籤鍵導航?
我注意到的一件事情是組件之間的默認標籤鍵導航已經改變,在這種情況下是不可預測的。
要重現去4.2 fiddle here,然後點擊第一個文本字段,點擊標籤,然後它會改變焦點狀態組合框;再次點擊選項卡,它會轉到「下一步」按鈕,再次點擊選項卡,它將以可預測的順序進入「第二選項」單選按鈕等等。
然後在5.1 fiddle here上重複相同的操作。首先你會注意到「我的第一選擇」收音機沒有被選中(這是另一個問題),但是我想要解決的主要問題是它在標籤按鍵上的奇怪順序。
如何讓tab鍵導航的行爲與4.2版本一樣?
包括示例代碼在這裏:
// The data store containing the list of states
var states = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data : [
{"abbr":"AL", "name":"Alabama"},
{"abbr":"AK", "name":"Alaska"},
{"abbr":"AZ", "name":"Arizona"}
]
});
Ext.application({
name : 'Fiddle',
launch : function() {
Ext.create('Ext.form.Panel', {
title: 'My Navigable Panel',
items: [
{
xtype: 'radiogroup',
layout: 'vbox',
items: [
{
xtype: 'radiofield',
boxLabel: 'My First Option',
name: 'radio',
value: true,
checked: true,
listeners: {
change: function(group, newValue, oldValue) {
if(newValue) {
group.up('form').down('fieldcontainer[name=containerA]').show();
group.up('form').down('fieldcontainer[name=containerB]').hide();
} else {
group.up('form').down('fieldcontainer[name=containerA]').hide();
group.up('form').down('fieldcontainer[name=containerB]').show();
}
}
},
},
{
xtype: 'fieldcontainer',
layout: 'hbox',
name: 'containerA',
fieldDefaults: {
labelAlign: 'top',
margin: '0 5 0 5'
},
items: [
{
xtype: 'textfield',
fieldLabel: 'First field',
allowBlank: false
},
{
xtype: 'combo',
fieldLabel: 'State',
width: 50,
store : states,
queryMode: 'local',
displayField: 'name',
valueField: 'abbr',
},
{
xtype: 'button',
text: 'Next'
}
]
},
{
xtype: 'radiofield',
boxLabel: 'My Second Option',
name: 'radio',
value: false
}
]
},
{
xtype: 'fieldcontainer',
padding: '0 0 0 25',
name: 'containerB',
hidden: true,
items: [{
xtype: 'radiogroup',
layout: 'vbox',
items: [
{
xtype: 'radiofield',
fieldLabel: 'My nested radio button A',
name: 'subradio'
},
{
xtype: 'radiofield',
fieldLabel: 'My nested radio button B',
name: 'subradio'
}
]
}]
}
],
renderTo: Ext.getBody()
}).show();
}
});
我不認爲這是一個確切的答案,因爲我真正想要的是莫名其妙地調整導航順序,而不是被強迫改變我的觀點的組成。但是我包含了這個答案,因爲這是我最終用來解決問題的方法。如果一對夫婦多天沒人用更令人滿意的答案回答,我會記住這是一個正確的答案。 – jacoviza