TabPanel下Panel的setIconClass方法无效

     在使用TabPanel的时候,需要根据Panel的不同状态给改Panel设置不同的图标,由此发现了其setIconClass方法无效。google了一下,还是在EXT官方论坛上发现了解决方案。共有2种,原理类似。

方法1:覆盖原有方法

/**
 * fix for setIconClass.
 * 在TabPanel中加入的Panel,其setIconClass功能无效,该补丁修复了该BUG
 */
Ext.override(Ext.TabPanel, {
	// stash this away in TabPanel's prototype for the heck of it (oh...and
	// convenient caching)
	_initTabIconClassPatchFly : function(iconCls) {
		var oldIconClass = this.iconCls;
		var flyTabEl = Ext.fly(this.ownerCt.getTabEl(this));
		var tabSpan = flyTabEl.child('span.x-tab-strip-text');
		tabSpan.removeClass(oldIconClass);
		this.iconCls = iconCls;
		tabSpan.addClass(iconCls);
		// new code to bump over title for icon
		if (iconCls == "")
			flyTabEl.removeClass('x-tab-with-icon');
		else
			flyTabEl.addClass('x-tab-with-icon');
	},
	// instead of copy/pasting, just grab the current implementation of
	// TabPanel.initTab() for later
	_initTabBeforeSetIconClassPatch : Ext.TabPanel.prototype.initTab,
	// now override initTab()
	initTab : function(item, index) {
		// call the original implementation of initTab()
		this._initTabBeforeSetIconClassPatch(item, index);
		// and patch the Tab item's setIconClass method.
		item.setIconClass = this._initTabIconClassPatchFly;
	}
});

 

方法2:重写新方法

/**
 * 增加了setIconCls方法,用以修复setIconClass无效的BUG
 */
Ext.override(Ext.Panel, {
	setIconCls : function(i) {
		Ext.fly(this.ownerCt.getTabEl(this)).child('.x-tab-strip-text')
				.replaceClass(this.iconCls, i);
		this.setIconClass(i);
	}
});

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值