从ExtJS中的Controller中的click事件获取表单?

时间:2012-07-18 18:17:03

标签: extjs extjs4 extjs-mvc

我正在扩展http://docs.sencha.com/architect/2-0/#!/guide/views_forms_extjs中给出的示例,以使用更多以MVC为中心的方法。所以在服务中我想将点击处理程序从视图移动到新创建的控制器。

我点击即使工作正常,但我不知道如何从控制器的上下文操作表单(视图使用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的上下文中,这不再是视图而是控制器。

给定给我的参数,(Ext.button.Button按钮,事件e,对象选项),如何在适当的表单上获得提交?

我应该使用ExtJS 4来注意这一点。

1 个答案:

答案 0 :(得分:4)

button.up('form');

会做到这一点。

要使BasicForm对象可以运行,请使用

  

button.up( '形式')。getForm()