2014-11-14 3 views
0

В настоящее время я новичок в Sencha, и я хочу обновить badgeText в Sencha Touch со счета магазина в Ext.Container, см. Мой код ниже для вашего ссылка Спасибо, и Бог благословит.Как обновить badgeText в Sencha Touch (Ext.Container)

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' 
     }); 

    } 




}); 

EDIT: Это один работает в соответствии с Суджата в - Tap Event

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

     notificationsMenuItem: { 
      tap: 'notificationsItemTap' 
     } 
    } 
} 

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

EDIT: ОБНОВЛЕНИЕ-02 - Working Модифицированный код в соответствии с последним ответом Суджата в:

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

ответ

0

Вы может установить его с помощью метода setBadgeText. Добавить имя: "уведомления" в окне просмотра. В контроллере получить реф на кнопке, как это:

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

Получить событие Кнопки Tap:

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

Edit: -

Чтобы получить текст значка на загрузке меню, которое вы можно использовать метод инициализации вида, например:

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

Hi @Sujata, Thank yo u очень много для вашего ответа. В настоящее время этот «XX.view.Menu» не имеет контроллера, поэтому, если я получу refs, чтобы добавить другого контроллера, который будет указывать на badgeText, какой будет формат? –

+0

Извините, но я не могу понять, чего вы хотите. Не могли бы вы прояснить это. Вам нужно установить badgeText в метод 'setParent'? –

+0

Hi @Sujata Я уже редактировал код выше. Надеюсь, я ясно объяснил это. Большое вам спасибо за помощь! –