Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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_Extjs4_Extjs Mvc - Fatal编程技术网

从ExtJS中控制器中的单击事件获取表单?

从ExtJS中控制器中的单击事件获取表单?,extjs,extjs4,extjs-mvc,Extjs,Extjs4,Extjs Mvc,我正在扩展中给出的示例,以使用更以MVC为中心的方法。为此,我想将点击处理程序从视图移动到新创建的控制器 我的click甚至可以正常工作,但我不知道如何从控制器的上下文对表单进行操作(视图使用的是this.getForm()) 这是我到目前为止得到的 Ext.define('LoginExample.controller.LoginController', { extend: 'Ext.app.Controller', onLoginButtonClick: function

我正在扩展中给出的示例,以使用更以MVC为中心的方法。为此,我想将点击处理程序从视图移动到新创建的控制器

我的click甚至可以正常工作,但我不知道如何从控制器的上下文对表单进行操作(视图使用的是this.getForm())

这是我到目前为止得到的

Ext.define('LoginExample.controller.LoginController', {
    extend: 'Ext.app.Controller',


    onLoginButtonClick: function(button, e, options) {
        console.log('button clicked');


        if (this.getForm().isValid()) {
            this.getForm().submit({
                url: 'login.php',
                success: function(form, action) {
                    Ext.Msg.alert('Login Successful!');
                },
                failure: function(form, action) {
                    Ext.Msg.alert('Login Failed!');
                }
            });
        }
    },


    init: function() {
        this.control({
            "#loginButton": {
                click: this.onLoginButtonClick
            }
        });
    }

});
显然,onLoginButtonClick上下文中的this不再是视图,而是控制器

给定给我的参数(Ext.button.button、Event e、Object options),我如何在适当的表单上获得提交

我应该使用extjs4来说明这一点

button.up('form');
我会成功的

要获取要操作的BasicForm对象,请使用

button.up('form').getForm()


这对我来说很有意义,但当我这样做时,我得到了“UncaughtTypeError:Object[Object Object]没有方法‘isValid’”。这是因为表单没有isValid()方法。但是表单确实有一个内部BasicForm,它有一个isValid()方法。您必须使用奇怪的form.form.isValid()表达式才能得到它:)谢谢,这很有效。您还可以使用.getForm()代替form。或者使用Ext.ComponentQuery.query(“formid”)[0].getForm()执行查询