从ExtJS中控制器中的单击事件获取表单?
我正在扩展中给出的示例,以使用更以MVC为中心的方法。为此,我想将点击处理程序从视图移动到新创建的控制器 我的click甚至可以正常工作,但我不知道如何从控制器的上下文对表单进行操作(视图使用的是this.getForm()) 这是我到目前为止得到的从ExtJS中控制器中的单击事件获取表单?,extjs,extjs4,extjs-mvc,Extjs,Extjs4,Extjs Mvc,我正在扩展中给出的示例,以使用更以MVC为中心的方法。为此,我想将点击处理程序从视图移动到新创建的控制器 我的click甚至可以正常工作,但我不知道如何从控制器的上下文对表单进行操作(视图使用的是this.getForm()) 这是我到目前为止得到的 Ext.define('LoginExample.controller.LoginController', { extend: 'Ext.app.Controller', onLoginButtonClick: function
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、Event e、Object options),我如何在适当的表单上获得提交
我应该使用extjs4来说明这一点
button.up('form');
我会成功的
要获取要操作的BasicForm对象,请使用
button.up('form').getForm()
这对我来说很有意义,但当我这样做时,我得到了“UncaughtTypeError:Object[Object Object]没有方法‘isValid’”。这是因为表单没有isValid()方法。但是表单确实有一个内部BasicForm,它有一个isValid()方法。您必须使用奇怪的form.form.isValid()表达式才能得到它:)谢谢,这很有效。您还可以使用.getForm()代替form。或者使用Ext.ComponentQuery.query(“formid”)[0].getForm()执行查询