【问题标题】:Sencha Touch 2 - Get Form values using MVCSencha Touch 2 - 使用 MVC 获取表单值
【发布时间】:2013-11-18 20:30:26
【问题描述】:

我的问题是关于这篇文章中可能的答案Sencha Touch 2 - How to get form values?

我在尝试使用控制器从视图中的表单检索值时遇到同样的问题。

我当前的错误是 Uncaught TypeError: Object # has no method 'getValues'

查看:

Ext.define("App.view.Login", {
extend: 'Ext.form.Panel',
requires: [
    'Ext.field.Password'
],
id: 'loginview',

config: {
    items: [{
        xtype: 'titlebar',
        title: 'Login',
        docked: 'top'
    },
    {
        xtype: 'fieldset',
        id: 'loginForm',
        defaults: {
            required: true
        },
        items: [{
            items: [{
                xtype: 'textfield',
                name: 'username',
                label: 'Username:'
            },
            {
                xtype: 'passwordfield',
                name: 'password',
                label: 'Password:'
            }]
        }]
    },
    {
        xtype: 'toolbar',
            layout: {
                pack: 'center'
            }, // layout
            ui: 'plain',
            items: [{
                xtype: 'button',
                text: 'Register',
                id: 'register',
                ui: 'action',
            }, {
                xtype: 'button',
                text: 'Login',
                id: 'login',
                ui: 'confirm',
            }] // items (toolbar)
    }]
}

});

控制器:

Ext.define('App.controller.Login', {
extend: 'Ext.app.Controller',

requires: [
    'App.view.Login',
    'Ext.MessageBox'
],

config: {
    refs: {
        loginForm: '#loginForm',
        register: '#register',
        login: '#login'
    },
    control: {
        register: {
            tap: 'loadRegisterView'
        },
        login: {
            tap: 'loginUser'
        }
    },

    history: null
},

loadRegisterView: function(btn, evt) {
    /*var firststep = Ext.create('App.view.Register');
    Ext.Viewport.setActiveItem(firststep);*/
},
loginUser: function(btn, evt) {
    var values = loginForm.getValues();
    console.log(values);
}

});

谢谢

编辑: 所以下面的代码有效,但它不是我看到每个人都这样做的方式。

var form = Ext.getCmp('loginview');

console.log(form.getValues());

其他人都这样做。getLoginView().getValues(); .我不明白“这个”在错误的范围内,甚至会在哪里声明 getLoginView?没有人在他们的 sn-ps 中包含此信息。这是另一个例子Sencha Touch 2 - How to get form values?

【问题讨论】:

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


    【解决方案1】:

    在“id”下方的视图中添加xtype:

    xtype: 'loginform',
    

    然后将 loginForm 的引用替换为:

    loginForm: 'loginform',
    

    您的代码将起作用。你做的错误是你试图访问'fieldset'中'formpanel'的方法。

    【讨论】:

      猜你喜欢
      • 2012-03-29
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      相关资源
      最近更新 更多