Sencha Touch 2 - 如何获取表单值?

时间:2012-03-13 13:23:02

标签: javascript sencha-touch extjs sencha-touch-2

我有一个Sencha Touch 2 MVC应用程序,其中包含一个表单作为视图。 我试图从控制器获取它的值而没有成功。

怎么可以这样做?我正在发布我的视图/控制器代码。

查看:

Ext.define('MyApp.view.LoginForm', {
    extend: 'Ext.form.Panel',
    config: {
        fullscreen: true,
        items: [
            {
                xtype: 'fieldset',
                title: 'Login',
                id: 'loginform',
                items: [
                    {
                        xtype: 'emailfield',
                        name: 'email',
                        label: 'Email'
                    },
                    {
                        xtype: 'passwordfield',
                        name: 'password',
                        label: 'Password'
                    }
                ]
            },
            {
                xtype: 'button',
                width: '50%',
                text: 'Login',
                ui: 'confirm',
                id: 'btnSubmitLogin'
            },
            {
                xtype: 'toolbar',
                docked: 'top',
                title: 'MyApp Mobile'
            }
        ]
    }
});

控制器:

Ext.define("MyApp.controller.LoginForm", {
    extend: "Ext.app.Controller",
    config: {
        refs: {
            btnSubmitLogin: "#btnSubmitLogin"
        },
        control: {
            btnSubmitLogin: {
                tap: "onSubmitLogin"
            }
        }
    },
    onSubmitLogin: function () {
        console.log("onSubmitLogin");
        var values = app.views.LoginForm.loginform.getValues();
        TryLogin(values['email'], values['password']);
    },
    launch: function () {
        this.callParent();
        console.log("LoginForm launch");
    },
    init: function () {
        this.callParent();
        console.log("LoginForm init");
    }
});

代码将上去

console.log("onSubmitLogin");

然后停下来。

在发布时我使用:

var LoginForm = Ext.create("MyApp.view.LoginForm");
Ext.Viewport.add(LoginForm);

那么,我怎样才能得到这些值?

由于

2 个答案:

答案 0 :(得分:17)

确定。经过一些调整后找到了答案。为了后代 - 这是解决方案:

我已将id:'loginform'添加到LoginForm,然后在'refs'部分的控制器中添加了loginForm: '#loginform'。 然后我可以用它作为:

var values = this.getLoginForm().getValues();

祝所有人好运

答案 1 :(得分:0)

试试这个

控制器:


    Ext.define("mySIMS.controller.LoginForm", {
        extend : "Ext.app.Controller",
        config : {
            refs : {
                btnSubmitLogin : "#btnSubmitLogin",
                LoginForm : '#loginform'
            },
            control : {
                btnSubmitLogin : {
                    tap : "onSubmitLogin"
                }
            }
        },
        onSubmitLogin : function() {
            console.log("onSubmitLogin");
            var values = this.getLoginForm().getValues();
            console.log(values);

            //var values = Oreilly.views.LoginForm.loginform.getValues();

        },
        launch : function() {
            this.callParent();
            console.log("LoginForm launch");
        },
        init : function() {
            this.callParent();
            console.log("LoginForm init");
        }
    });

查看:


    Ext.define('mySIMS.view.LoginForm', {
        extend : 'Ext.form.Panel',
        config : {
            id : 'loginform',
            fullscreen : true,
            items : [{
                xtype : 'fieldset',
                title : 'Login',
                items : [{
                    xtype : 'emailfield',
                    name : 'email',
                    label : 'Email'
                }, {
                    xtype : 'passwordfield',
                    name : 'password',
                    label : 'Password'
                }]
            }, {
                xtype : 'button',
                width : '8%',
                text : 'Login',
                ui : 'confirm',
                id : 'btnSubmitLogin'
            }, {
                xtype : 'toolbar',
                docked : 'top',
                title : 'Mobile'
            }]
        }
    });

希望得到这个帮助。