如何在不使用此代码中的Ext.getCmp的情况下执行相同的操作?

时间:2011-08-09 16:55:30

标签: javascript extjs extjs4

这是调用窗口显示事件后使用和触发按钮单击事件的代码。这很好用。但是如何在不使用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 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。一种方法是使用Ext.create调用进行赋值,因为Ext.create返回这样的引用。以下示例中的app命名空间是填充,因为您使用的任何命名空间都是未知的。获得对窗口小部件的变量引用后,您可以使用它来获取对顶部工具栏的引用,然后在工具栏中获取所需项目的引用。

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

答案 1 :(得分:1)

使用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的正确用法并实现它..

干杯。