首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sencha Touch中选项卡面板上的BadgeCls

Sencha Touch中选项卡面板上的BadgeCls
EN

Stack Overflow用户
提问于 2013-03-21 21:08:09
回答 2查看 1.4K关注 0票数 3

第一个问题出现在这里!由于某些原因,我无法在Sencha Touch中使用badgeCls选项。我正在尝试更改徽章的颜色,但我传递的类在呈现时并没有显示在实际的徽章上。

我在这里做了一个简单的例子:http://jsfiddle.net/goatkarma/vv66Z/11/

并将选项卡项(在CSS中定义)的徽章类设置为“绿色”。

代码语言:javascript
复制
badgeCls: 'green'

渲染应用程序时,类中缺少“绿色”类:

代码语言:javascript
复制
<span style="" class="x-badge" id="ext-element-20">!!</span>

在检查器的类中添加‘绿色’确实会改变颜色,所以我似乎错误地使用了'badgeCls‘,或者它就是坏了!有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-21 23:36:09

我为Ext.tab.Panel创建了一个小的“修复”。我希望这对你有帮助。

更新

  • 现在按预期工作:)
  • badgeCls不能将数组作为参数(如果需要此功能,请让我知道;))

覆盖:

代码语言:javascript
复制
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());
        }
    }
});
票数 2
EN

Stack Overflow用户

发布于 2017-02-23 07:25:12

我认为这是ExtJS 6.2.x中仍然存在的一个疏忽,但似乎有一种更简单的方法,而不是简单地修补和/或覆盖类的默认行为(当升级到未来版本时,默认行为往往会被破坏)。

线索就在这里:

代码语言:javascript
复制
tabConfig = initialConfig.tab || {},
...
tabInstance = Ext.factory(tabConfig, Ext.tab.Tab, currentTabInstance);

如果您为要添加到选项卡面板的任何组件指定了一个tab配置对象,它将从该配置对象开始实例化Ext.tab.Tab,而不是缺省为一个空的dict,然后从其他选项中将其拼接在一起。

代码语言:javascript
复制
tab: {
  badgeText: 'My text',
  badgeCls: 'x-badge green'
}

请注意,如果您希望保留默认样式,则仍必须指定“x-badge”类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15548490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档