我的问题与此帖Sencha Touch 2 - How to get form values?
中可能的答案有关我在尝试使用Controller从视图中检索表单时遇到了同样的问题。
我当前的错误是未捕获的TypeError:对象#没有方法'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?没有人将这些信息包含在他们的片段中。这是另一个例子Sencha Touch 2 - How to get form values?
答案 0 :(得分:1)
在“id”下面的视图中添加xtype:
xtype: 'loginform',
然后用以下代码替换loginForm的引用:
loginForm: 'loginform',
您的代码将有效。你正在做的错误是你试图在'fieldset'中访问'formpanel'的方法。