生活随笔
收集整理的這篇文章主要介紹了
Extjs 更换主题(转载)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn)自http://www.wenhaozhong.com/27.html
這里基于 Extjs4.2(發(fā)文時(shí)官方剛發(fā)布了最新版5.0) 進(jìn)行開(kāi)發(fā)的,更換主題后,主題信息保存在本地 cookie 中,如果要保存在數(shù)據(jù)庫(kù)中,請(qǐng)自行修改!
由于我采用的是Sencha Architect3 可視化開(kāi)發(fā)工具 ,前臺(tái)代碼采用官方推薦的mvc模式,
首先,我新建了個(gè)Combobox 讓用戶(hù)選擇主題
?
model代碼如下:
?Ext.define('Kl.model.sys.Theme', {??? extend: 'Ext.data.Model',??? requires: [??????? 'Ext.data.Field'??? ],??? fields: [??????? {??????????? name: 'name'??????? },??????? {??????????? name: 'id'??????? }??? ]});view 代碼如下:
?{??????????????????????????? xtype: 'combobox',??????????????????????????? itemId: 'mycombobox1',??????????????????????????? padding: 0,??????????????????????????? fieldLabel: '皮膚更換??????????? ',??????????????????????????? labelAlign: 'right',??????????????????????????? labelPad: 1,??????????????????????????? labelWidth: 65,??????????????????????????? name: 'theme',??????????????????????????? value: 'ext-all.css',??????????????????????????? displayField: 'name',??????????????????????????? forceSelection: true,??????????????????????????? queryMode: 'local',??????????????????????????? store: 'sys.Theme',??????????????????????????? typeAhead: true,??????????????????????????? valueField: 'id',??????????????????????????? listeners: {??????????????????????????????? change: { //改變選擇時(shí)觸發(fā)事件??????????????????????????????????? fn: me.onMycomboboxChange11,??????????????????????????????????? scope: me??????????????????????????????? },??????????????????????????????? afterrender: {//初始化數(shù)據(jù)??????????????????????????????????? fn: me.onMycomboboxAfterRender11,??????????????????????????????????? scope: me??????????????????????????????? }??????????????????????????? }??????????????????????? }在combobox中的store 保存了主題css文件的路徑
Store 代碼如下:
?Ext.define('Kl.store.sys.Theme', {??? extend: 'Ext.data.Store',???? requires: [??????? 'Kl.model.sys.Theme',??????? 'Ext.data.proxy.Ajax',??????? 'Ext.data.reader.Array'??? ],???? constructor: function(cfg) {??????? var me = this;??????? cfg = cfg || {};??????? me.callParent([Ext.apply({??????????? model: 'Kl.model.sys.Theme',??????????? storeId: 'sys.Theme',??????????? data: [??????????????? {??????????????????? name: '經(jīng)典懷舊',??????????????????? id: 'ext-all.css'??????????????? },??????????????? {??????????????????? name: '鋼鐵世界',??????????????????? id: 'ext-all-gray.css'??????????????? },??????????????? {??????????????????? name: '粉紅女郎',??????????????????? id: 'ext-all-red.css'??????????????? }??????????? ],??????????? proxy: {??????????????? type: 'ajax',??????????????? reader: {??????????????????? type: 'array'??????????????? }??????????? }??????? }, cfg)]);??? }});由于采用基本的事件處理就可以搞定,所以就沒(méi)有寫(xiě) 控制器 control
事件處理代碼如下: 采用 Ext.util.CSS.swapStyleSheet() 方法設(shè)置主題。
?? onMycomboboxChange11: function(field, newValue, oldValue, eOpts) {??????? if(newValue!=oldValue){??????????? Ext.util.CSS.swapStyleSheet('theme', '../../extjs4.2/resources/css/'+newValue);??????????? var cp = new Ext.state.CookieProvider();??????????? Ext.state.Manager.setProvider(cp);??????????? cp.set("themes",newValue);??????? }??? },??? onMycomboboxAfterRender11: function(component, eOpts) {??????? var cp = new Ext.state.CookieProvider();??????? Ext.state.Manager.setProvider(cp);??????? //cp.set("themes",data.username);??????? var themes = cp.get("themes");??????? if(themes){??????????? component.setValue(themes);??????????? Ext.util.CSS.swapStyleSheet('theme', '../../extjs4.2/resources/css/'+themes);??????? }??? }小伙伴們,你搞定了嗎? 附上效果圖:
其他參考鏈接
extjs4.2更換主題
轉(zhuǎn)載于:https://www.cnblogs.com/Joetao/articles/4657428.html
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的Extjs 更换主题(转载)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。