ログインフォームがあり、ExtJS 5 を使用しています。フォームへの参照を取得するために 4 以降で使用した関数を使用しようとしていますが、うまくいきません。
以下はフォームです。
Ext.require([
'Ext.form.*',
'Ext.Img',
'Ext.tip.QuickTipManager'
]);
Ext.define('APP.view.core.forms.Loginform', {
extend: 'Ext.window.Window',
xtype: 'form-login',
id: 'loginForm',
title: 'Login',
frame:true,
width: 320,
bodyPadding: 10,
defaultType: 'textfield',
items: [{
allowBlank: false,
fieldLabel: 'Email',
name: 'email',
emptyText: 'test@example.com'
}, {
allowBlank: false,
fieldLabel: 'Password',
name: 'password',
emptyText: 'password',
inputType: 'password'
}],
buttons: [{
text:'Login',
action: 'loginSubmit'
}],
initComponent: function() {
this.defaults = {
anchor: '100%',
labelWidth: 120
};
this.callParent(arguments);
}
});
そして、これが私のコントローラーです(ExtJS 5が採用するMVVMの方法は知りません):
init: function() {
this.control({
// Login form button
'button[action=loginSubmit]' : {
click: this.loginAction
}
});
},
loginAction: function(button, event) {
console.info('login button interaction.');
// Reference to the the window
var loginWindow = button.up('window');
var loginForm = loginWindow.down('form-login');
console.log(loginForm.getValues());
var loginMask = new Ext.LoadMask({
target: Ext.getCmp('loginForm'),
msg: "Please wait."
}).show();
// Send AJAX request
Ext.Ajax.request({
url: '/user/login',
method: 'post',
success: function(response){
var responseValues = Ext.decode(response.responseText);
loginWindow.close();
//Didn't return a 404 or 500 error, hide mask
loginMask.hide();
//Show user success message
Ext.Msg.show({
title: 'Login successful',
msg: responseValues.msg,
buttons: Ext.Msg.OK
});
//refresh store from combobox value
//var store = Ext.getCmp('adminslist').getStore();
//store.load();
},
failure: function(){
loginWindow.close();
loginMask.hide();
Ext.Msg.show({
title: 'Login failed',
msg: 'Login failed please contact the development team',
buttons: Ext.Msg.OK,
icon: Ext.Msg.ERROR
});
}
});
},
このセクションでは、フォームへの参照を取得してから値への参照を取得しようとしています...
// Reference to the the window
var loginWindow = button.up('window');
var loginForm = loginWindow.down('form-login');
console.log(loginForm.getValues());
当面は回避策var email = Ext.getCmp('emailField').getValue();
がありますが、将来的にはフォームを適切に参照して、一度に値を取得できるようにしたいと考えています。
私が何をしようとしても、フォームは null として返されます。何かアイデアはありますか? :/
更新: コンソール ログ。
var form = Ext.getCmp('loginForm');
console.log(form.getValues());
出力: TypeError: form.getValues は関数ではありません
var form = Ext.getCmp('loginForm');
console.log(form.getForm());
出力: TypeError: form.getForm は関数ではありません
console.log(form);