Здравствуйте, подскажите пожалуйста как правильно реализовать смену Ext-темы из комбобокса? я сделал так:
function changeTheme(self) {
var me = self? self :this;
var theme_file = me.getValue();
if (theme_file==="default") {
theme_file = '/theme-classic/resources/theme-classic-all.css'
}
Ext.util.CSS.swapStyleSheet('theme', 'ext/build/classic/' + theme_file);
new Ext.util.Cookies.set('ext-theme', theme_file);
}
Ext.define('MyApp.view.main.myCombo', {
xtype: 'myCombo',
extend: 'Ext.form.Panel',
title: 'Мой комбобокс',
width: 500,
layout: 'form',
viewModel: {},
frame: true,
requires: [
'MyApp.store.States',
],
store: {
type: 'mycombo'
},
items: [{
xtype: 'fieldset',
layout: 'anchor',
items: [{
xtype: 'component',
anchor: '100%',
html: [
'<h3>Locally loaded data</h3>',
'<p>This ComboBox uses local data from a JS array</p>'
]
}, {
xtype: 'combobox',
reference: 'states',
publishes: 'value',
value: Ext.util.Cookies.get("ext-theme") || "default",
fieldLabel: 'Выберите тему:',
displayField: 'Title',
valueField: 'fileName',
listeners: {
select: function(){
changeTheme(this);
location.reload();
},
load:function(box) {
changeTheme(this);
},
beforerender:function(box) {
changeTheme(this);
}
},
anchor: '-15',
store: {
type: 'states'
},
minChars: 0,
queryMode: 'local',
typeAhead: true
}]
}]
});
Тема меняется, но стили предыдущей темы не удаляются, вследствие чего страдает внешний вид активной темы