ExtJS从模态视图调用方法

时间:2017-06-28 19:12:28

标签: extjs

我在表单中创建了一个方法,用于创建一个带有表单的模态。

onButtonClickSave: function(button, e, eOpts) {
    //Create modal form
    var confirm = new Ext.Window({
      xtype: 'form',
      hidden: true,
      itemId: 'FrmModalConfirma',
      layout: 'auto',
      bodyPadding: 10,
      items: [
      {
        xtype: 'displayfield',
        fieldLabel: 'Are you sure?',
        labelWidth: 500
      },
      {
        xtype: 'combobox',
        width: 500,
        fieldLabel: 'Reason',
        labelWidth: 150,
        store: [
        [
        '2',
        'Death'
        ],
        [
        '3',
        'Birth'
        ],
        [
        '4',
        'Job'
        ],
        [
        '5',
        'Debt'
        ]
        ]
      },
      {
        xtype: 'container',
        layout: 'column',
        items: [
        {
          xtype: 'button',
          text: 'Yes',
          listeners: {
            click: 'onButtonClickCalculate'
          }
        },
        {
          xtype: 'tbspacer',
          width: 30
        },
        {
          xtype: 'button',
          text: 'No, cancel'
        }
        ]
      }
      ]
    });
    //Show modal form
    confirm.show();
  }

但是当我点击应该执行此代码的按钮时:

onButtonClickCalculate: function(button, e, eOpts) {
      Ext.Msg.alert('Yes', 'It works');
}

我在浏览器上收到此错误: Ext.util.Event.getFireInfo():没有名为" onButtonClickGuardaRecalcula"在sbs.view.admin.PrincipalViewController 上,但所有这些都是在名为admin.StudentViewController的面板中创建的。我的第一个猜测是因为模态是使用新的Ext.Window创建的,但是我在ExtJS中缺乏经验让我完全失去了这个问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

有几件事。当你尝试this.getView()时,你找不到函数,因为你在窗口范围内而不是视图......这是否有意义:)

好的,这是你可以尝试的。在var confirm = new Ext.Window放置此

之前
var that = this;

然后在处理程序中添加属性

scope: that,
handler: function() {
    this.getView()..... 
}

类似的东西。