Я пытаюсь настроить селектор элементов множественного выбора на основе этого примера кода sencha .
Однако после встраивания в мою среду я получаю эту ошибку:
Что может быть причиной этой ошибки и как я могу ее исправить?
Добавление
Я обнаружил, что когда я закомментирую эту строку:
//xtype: 'itemselector',
тогда это работает. Почему не работает xtype "itemselector"?
Странно также, что я нашел этот список допустимых ExtJS xtypes и itemselector отсутствует в нем. Как мог бы работать пример Sencha, если "itemselector" не является допустимым xtype?
Приложение 2
Итак, я обнаружил, что демо обращается к этим двум файлам:
<script type="text/javascript" src="../ux/MultiSelect.js"></script>
<script type="text/javascript" src="../ux/ItemSelector.js"></script>
Демонстрационная версия указана в Ext JS 3.3 Samples , и я скачал Ext JS 3.3 , но единственный файл, который у меня есть в каталоге "ux":
Мой план состоит в том, чтобы загрузить эти файлы javascript непосредственно из примера, но: Что мне не хватает в примере itemselector, который заставляет меня соединить это вместе, чтобы работать так?
После добавления этих двух файлов я получаю сообщение об ошибке:
Так что, похоже, проблема 3.3.0 / 3.3.1, поскольку эти два отсутствующих файла .js помечены как 3.3.1:
Просто странно, что их нет в заметках о выпуске Ext JS 3.3.1 .
Я скачал 3.3.1, и пример работает локально, поэтому я знаю, что у меня есть все файлы. Поэтому я снова пытаюсь вписать это в среду моего приложения, я исправил ошибку Ext.EventManager, скопировав в ux-all-debug.js
:
Но я все еще получаю эту ошибку:
Я не могу обновить Ext JS, который использует мое приложение, так как очень много элементов управления зависят от старой файловой структуры. Как я могу узнать, чего не хватает, например, как разрешить ему использовать этот 'itemselector' xtype?
Полный код:
<script type="text/javascript">
clearExtjsComponent(targetRegion);
var multiselectDataStore = new Ext.data.ArrayStore({
data: [[123,'One Hundred Twenty Three'],
['1', 'One'], ['2', 'Two'], ['3', 'Three'], ['4', 'Four'], ['5', 'Five'],
['6', 'Six'], ['7', 'Seven'], ['8', 'Eight'], ['9', 'Nine']],
fields: ['value','text'],
sortInfo: {
field: 'value',
direction: 'ASC'
}
});
var simple_form = new Ext.FormPanel({
labelWidth: 75,
frame:true,
style: 'margin: 10px',
title: 'Simple Form',
bodyStyle:'padding:5px 5px 0',
width: 700,
defaults: {width: 230},
defaultType: 'textfield',
items: [{
fieldLabel: 'Item 1',
name: 'item1',
allowBlank:false,
value: 'sfsfdsf'
},{
fieldLabel: 'Item 2',
labelStyle: 'color:red',
style: 'color:red',
name: 'item2'
},{
fieldLabel: 'Item 3',
name: 'item3',
value: 'nnnnn',
xtype: 'displayfield'
}, {
fieldLabel: 'Email',
name: 'email',
vtype:'email'
}, {
xtype: 'itemselector',
name: 'itemselector',
fieldLabel: 'ItemSelector',
imagePath: '../ux/images/',
multiselects: [{
width: 250,
height: 200,
store: multiselectDataStore,
displayField: 'text',
valueField: 'value'
},{
width: 250,
height: 200,
store: [['10','Ten']],
tbar:[{
text: 'clear',
handler:function(){
simple_form.getForm().findField('itemselector').reset();
}
}]
}]
},
new Ext.form.TimeField({
fieldLabel: 'Time',
name: 'time',
minValue: '8:00am',
maxValue: '6:00pm'
}), {
width: 100,
xtype: 'combo',
mode: 'local',
value: 'en',
triggerAction: 'all',
forceSelection: true,
editable: false,
fieldLabel: 'Produkt',
name: 'language',
hiddenName: 'language',
displayField: 'name',
valueField: 'value',
store: new Ext.data.JsonStore({
fields : ['name', 'value'],
data : [
{name : 'German', value: 'de'},
{name : 'Broschüre', value: 'en'},
{name : 'French', value: 'fr'}
]
})
},{
xtype: 'radiogroup',
fieldLabel: 'Status',
columns: 1,
vertical: true,
items: [
{boxLabel: 'Low', name: 'rb-vert', inputValue: 1},
{boxLabel: 'Medium', name: 'rb-vert', inputValue: 2},
{boxLabel: 'High', name: 'rb-vert', inputValue: 3, checked: true},
{boxLabel: 'Item 4', name: 'rb-vert', inputValue: 4},
{boxLabel: 'Item 5', name: 'rb-vert', inputValue: 5}
]
}
],
buttons: [{
text: 'Save',
handler: function() {
if(simple_form.getForm().isValid()){
simple_form.getForm().getEl().dom.action = 'save_form.php';
simple_form.getForm().getEl().dom.method = 'POST';
simple_form.getForm().submit({
success : function(form, action) {
changeMenuItemInfoArea(start_info_panel2, 'Data was saved2, check file: output.txt (this is a new component)');
simple_form.hide();
}
})
} else {
Ext.Msg.minWidth = 360;
Ext.Msg.alert('Invlaid Form', 'Some fields are invalid, please correct.');
}
}
},{
text: 'Cancel',
handler: function(){
Ext.Msg.alert('Notice', 'Cancel was pressed.');
}
}]
});
replaceComponentContent(targetRegion, simple_form);
var start_info_panel2 = new Ext.Panel({
id: 'info_panel',
padding: 10,
margins: 10,
style: "margin: 10px",
width: 300,
html: '<p id="test">This is some information about the form.<p>',
border: false
});
replaceComponentContent(targetRegion, start_info_panel2);
hideComponent(regionHelp);
</script>