3
我正在擴展http://docs.sencha.com/architect/2-0/#!/guide/views_forms_extjs中給出的示例以使用更多的以MVC爲中心的方法。因此,我希望將點擊處理程序從視圖移動到新創建的控制器。從ExtJS中的Controller中單擊事件獲取表單?
我有點擊甚至工作正常,但我不知道如何從控制器的上下文操作窗體(視圖使用this.getForm())。
這裏是我到目前爲止,
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的背景下已經不再是視圖,反而控制器。
給定給我的參數(Ext.button.Button按鈕,Event e,Object選項),如何獲得適當的表單提交?
我應該注意到這一點使用ExtJS的4
這道理,我認爲應該工作,但是當我做,我得到「遺漏的類型錯誤:對象的翻譯:有沒有一種方法「的isValid 「」。 – 2012-07-18 18:39:33
這是因爲表單沒有isValid()方法。表單確實有一個內部的BasicForm,它有一個isValid()方法。你必須使用奇怪的form.form.isValid()表達式來得到它:) http://docs.sencha.com/ext-js/4-1/#!/api/Ext.form.Basic-方法-isValid – 2012-07-18 18:41:50
謝謝,這是有效的。您也可以使用.getForm()而不是表單。或者使用Ext.ComponentQuery.query(「#formid」)[0] .getForm() – 2012-07-18 18:47:55