第一个问题出现在这里!由于某些原因,我无法在Sencha Touch中使用badgeCls选项。我正在尝试更改徽章的颜色,但我传递的类在呈现时并没有显示在实际的徽章上。
我在这里做了一个简单的例子:http://jsfiddle.net/goatkarma/vv66Z/11/
并将选项卡项(在CSS中定义)的徽章类设置为“绿色”。
badgeCls: 'green'渲染应用程序时,类中缺少“绿色”类:
<span style="" class="x-badge" id="ext-element-20">!!</span>在检查器的类中添加‘绿色’确实会改变颜色,所以我似乎错误地使用了'badgeCls‘,或者它就是坏了!有什么想法吗?
发布于 2013-03-21 23:36:09
我为Ext.tab.Panel创建了一个小的“修复”。我希望这对你有帮助。
更新
覆盖:
Ext.define('My.tab.Panel', {
override: 'Ext.tab.Panel',
onItemAdd: function(card) {
var me = this;
if (!card.isInnerItem()) {
return me.callParent(arguments);
}
var tabBar = me.getTabBar(),
initialConfig = card.getInitialConfig(),
tabConfig = initialConfig.tab || {},
tabTitle = (card.getTitle) ? card.getTitle() : initialConfig.title,
tabIconCls = (card.getIconCls) ? card.getIconCls() : initialConfig.iconCls,
tabHidden = (card.getHidden) ? card.getHidden() : initialConfig.hidden,
tabDisabled = (card.getDisabled) ? card.getDisabled() : initialConfig.disabled,
tabBadgeText = (card.getBadgeText) ? card.getBadgeText() : initialConfig.badgeText,
tabBadgeCls = (card.getBadgeCls) ? card.getBadgeCls() : initialConfig.badgeCls,
innerItems = me.getInnerItems(),
index = innerItems.indexOf(card),
tabs = tabBar.getItems(),
activeTab = tabBar.getActiveTab(),
currentTabInstance = (tabs.length >= innerItems.length) && tabs.getAt(index),
tabInstance;
if (tabTitle && !tabConfig.title) {
tabConfig.title = tabTitle;
}
if (tabIconCls && !tabConfig.iconCls) {
tabConfig.iconCls = tabIconCls;
}
if (tabHidden && !tabConfig.hidden) {
tabConfig.hidden = tabHidden;
}
if (tabDisabled && !tabConfig.disabled) {
tabConfig.disabled = tabDisabled;
}
if (tabBadgeText && !tabConfig.badgeText) {
tabConfig.badgeText = tabBadgeText;
}
if (tabBadgeCls && !tabConfig.badgeCls) {
tabConfig.badgeCls = Ext.baseCSSPrefix + 'badge ' + tabBadgeCls;
}
//<debug warn>
if (!currentTabInstance && !tabConfig.title && !tabConfig.iconCls) {
if (!tabConfig.title && !tabConfig.iconCls) {
Ext.Logger.error('Adding a card to a tab container without specifying any tab configuration');
}
}
//</debug>
tabInstance = Ext.factory(tabConfig, Ext.tab.Tab, currentTabInstance);
if (!currentTabInstance) {
tabBar.insert(index, tabInstance);
}
card.tab = tabInstance;
me.callParent(arguments);
if (!activeTab && activeTab !== 0) {
tabBar.setActiveTab(tabBar.getActiveItem());
}
}
});发布于 2017-02-23 07:25:12
我认为这是ExtJS 6.2.x中仍然存在的一个疏忽,但似乎有一种更简单的方法,而不是简单地修补和/或覆盖类的默认行为(当升级到未来版本时,默认行为往往会被破坏)。
线索就在这里:
tabConfig = initialConfig.tab || {},
...
tabInstance = Ext.factory(tabConfig, Ext.tab.Tab, currentTabInstance);如果您为要添加到选项卡面板的任何组件指定了一个tab配置对象,它将从该配置对象开始实例化Ext.tab.Tab,而不是缺省为一个空的dict,然后从其他选项中将其拼接在一起。
tab: {
badgeText: 'My text',
badgeCls: 'x-badge green'
}请注意,如果您希望保留默认样式,则仍必须指定“x-badge”类。
https://stackoverflow.com/questions/15548490
复制相似问题