如何更新Sencha Touch中的badgeText(Ext.Container)

时间:2014-11-14 08:40:21

标签: extjs sencha-touch sencha-touch-2 sencha-touch-2.1

目前我是Sencha的新手,我想从Ext.Container中的商店计数更新Sencha Touch中的badgeText。

请参阅下面的代码供您参考:

 Ext.define('XX.view.Menu',{
    extend: 'Ext.Container',
    xtype: 'menu',
    config: {
        cls: 'mainmenu',
        docked: 'left',
        top: 0,
        left: 0,
        bottom: 0,
        zIndex: 0,
        width: 266,
        padding: '0 0 0 0',
        open: false,
        scrollable: 'vertical',
        defaultType: 'button',
        defaults: {
            textAlign: 'left'
        },
        scrollable: {
            indicators: false
        },
        items: [{
            text: 'Home',
            ui: 'mainmenu',
            iconCls: 'home',
            itemId: 'home'
        },{
            text: 'Contact Us',
            ui: 'mainmenu',
            iconCls: 'form',
            itemId: 'contactus'
        },{
            text : 'Notifications',
            ui: 'mainmenu',
            badgeText: '0',
            iconCls: 'form',
            itemId: 'notifications'
        }]
    },

    setParent: function(parent) {
        this.callParent(arguments);

        this.maskCmp = parent.add({
            xtype   : 'component',
            cls     : 'mainmenu-mask',
            top     : 0,
            zIndex  : 5000,
            hidden  : true,
            width   : 9999,
            left    : this.getWidth(),
            bottom  : 0
        });

        this.maskCmp.element.on({
            scope   : this,
            touchend: 'onMaskRelease'
        });

    }




});

编辑:  这个是按照Sujata的 - Tap事件

工作的
     config: {
    refs: {
        notificationsMenuItem: 'menu #notifications'
    },
    control: {

        notificationsMenuItem: {
            tap: 'notificationsItemTap'
        }
    }
}

notificationsItemTap: function(button){
    button.setBadgeText('1');
}

编辑:UPDATE-02 - 根据Sujata的最新回复修改代码:

  config: {
    refs: {
        notificationsMenuItem: 'menu #notifications'
    }
},
    control: {
        main: {
            initialize: 'mainInitialize',
            navigationMode: 'switchToNavigation'
        }
    },
    mainInitialize: function() {
    this.getNotificationsMenuItem().setBadgeText('48');
}

1 个答案:

答案 0 :(得分:0)

您可以使用setBadgeText方法进行设置。添加'名称:"通知"'按钮视图中的字段。在控制器中获取按钮的引用,如下所示:

refs: {
   notificationsBtn : 'button[name="notifications"]'  
}

获取按钮点击事件:

control: {
   notificationsBtn : {
      tap : function(btn) {
           btn.setBadgeText('1');  // Get your store data and set
      }
 }

修改: -

要在菜单加载时获取徽章文本,您可以使用视图的初始化方法,如下所示: -

    refs: {
      menu: 'menu',
      notificationsBtn : 'button[name="notifications"]'  
    },
    control: {
       menu : {
         initialize :  function(){
          this.getNotificationsBtn().setBadgeText('1');
         }
     }
  }