Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自模态视图的ExtJS调用方法_Extjs - Fatal编程技术网

来自模态视图的ExtJS调用方法

来自模态视图的ExtJS调用方法,extjs,Extjs,我有一个表单中的方法,它创建一个显示一个带有表单的模态 onButtonClickSave: function(button, e, eOpts) { //Create modal form var confirm = new Ext.Window({ xtype: 'form', hidden: true, itemId: 'FrmModalConfirma', layout: 'auto', bodyPadding:

我有一个表单中的方法,它创建一个显示一个带有表单的模态

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():sbs.view.admin.PrincipalViewController上没有名为“onButtonClickGuardaRecalcula”的方法,但所有这些都是在名为admin.StudentViewController的面板中创建的。我的第一个猜测是,这是因为模态是使用新的Ext.Window创建的,但是我在ExtJS方面缺乏经验,所以我完全不知道这个问题。有什么想法吗?

有两件事。当您尝试
this.getView()
时,您得到的函数找不到,因为您在窗口的范围内,而不是视图中…这有意义吗:)

好的,这是你可以尝试的。在您的
var confirm=new Ext.Window
之前,将此

var that = this;
然后在处理程序中添加属性

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

类似于此。

似乎您的函数onButtonClickCalculate超出了范围。因此它找不到它。尝试直接放置该函数,让我们看看会发生什么。直接放置该函数是什么意思?不要放置click:'onButtonClickCalculate'放置类似这样的内容click:function(){alert('eeee');}谢谢,它现在确实执行了该方法,但是,我尝试在该方法内部运行它:this.getView().down(“#frmadminingresoss”).getForm();它说getView不是一个函数。我怎样才能调用模态的父级上的表单?Yuo应该把它作为一个答案,这样我就可以向上投票并选择它,如果它工作的话。谢谢你,正如你在对我的问题的评论中所说的,最好在模态中创建整个函数,而不是试图从另一个范围调用它我遇到的另一个错误是使用var form=Ext.ComponentQuery.query(“#FormName”)[0];而不是这个.getView()解决的