4

我正在扩展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 上下文中的 this 不再是视图,而是控制器。

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

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

4

1 回答 1

4
button.up('form');

会成功的。

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

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

于 2012-07-18T18:25:14.380 回答