Как сделать то же самое, не используя Ext.getCmp в этом коде? - PullRequest
0 голосов
/ 09 августа 2011

Это код, который я использую и запускаю событие нажатия кнопки при вызове события показа окна.это отлично работаетно как сделать то же самое без использования Ext.getCmp

это строка

Ext.getCmp('recent_refresh').fireEvent('click');

это код

 Ext.create('widget.window', {
      title: 'Activity',
      closable: true,
      closeAction: 'hide',
      width: 250,
      height: 300,
      bodyBorder: true,
      tbar: {
          xtype: 'toolbar',
          ui: 'plain',
          items: [{
              iconCls:'refresh',
              id: 'recent_refresh',
              listeners: {
                click: function(){ 
                      Ext.Ajax.request({
                          url: 'control.php',
                          params: {
                              'case': '18'
                          },
                          success: function(response){
                              var json =  Ext.decode(response.responseText);

                          }
                      });               
                }  
              }
          },
          '->',
          {
              xtype: 'displayfield',
              name: 'act_date',
              id: 'act_date',
              value: new Date(),
              formatValue: Ext.util.Format.dateRenderer('Y-m-d')
          }]
      },      
      layout:'accordion',
      border: false,
      items: [ grid1, grid2, grid3 ],
      listeners: {
            show: function() {      Ext.getCmp('recent_refresh').fireEvent('click'); }        
      }

}).show();

С уважением

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Используйте свойство ref. Я не знаю, перенесено ли оно в Ext JS 4, но вот как мы это делаем в Ext Js 3.3

var win = new Ext.Window({
..config..
buttons : [{
  text : 'save'
  ref : 'saveButton'
}],

listeners : {
  show : function(win){
   win.saveButton.fireEvent('click'); //saveButton here is the same as used in ref above.
  }
}
});

ref можнотеперь используется напрямую, и нет необходимости использовать Ext.getCmp

, проверить правильность использования ref в вашем случае и реализовать его.

Cheers.

1 голос
/ 09 августа 2011

Есть много способов сделать это.Один из способов - сделать присваивание с помощью вызова Ext.create, поскольку Ext.create возвращает такую ​​ссылку.Пространство имен приложения в приведенном ниже примере является заполнителем, поскольку все используемые вами пространства имен неизвестны из вашего текста.Если у вас есть ссылка на переменную для виджета, вы можете использовать ее, чтобы получить ссылку на верхнюю панель инструментов, а затем получить ссылку на нужный элемент внутри панели инструментов.

    Ext.ns('app');
    app.activityWin = Ext.create('widget.window', {...}
    app.activityWin.getTopToolbar().get('recent_refresh').fireEvent('click');
...