我有一个Ext.FormPanel,它有一个Save
按钮,按此顺序执行两项操作:(1)发布数据,(2)go返回到调用它的页面。
buttons: [{
text: 'Save',
handler: function() {
if(panel_form.getForm().isValid()){
panel_form.getForm().getEl().dom.action = 'backend/page/blocks/edit_positioned_post/17.html';
panel_form.getForm().getEl().dom.method = 'POST';
panel_form.getForm().submit(); //FIRST POST DATA
replace_region_with_uri_content('/backend/page'); //THEN GO BACK
} else {
Ext.Msg.minWidth = 360;
Ext.Msg.alert('Invalid Form', 'Some fields are invalid, please correct.');
}
}
},{
text: 'Cancel',
handler: function(){
replace_region_with_uri_content('/backend/page');
}
}]
然而实际发生是倒退,正如我在Firebug中看到的那样,即(1)返回,(2)帖子数据,导致返回的网格未显示更新的数据。
如何在replace_region_with_uri_content()
完成后强制执行panel_form.getForm().submit()
,即将第一个函数作为第二个函数的回调发送?
答案 0 :(得分:1)
您应该向表单添加一个事件,查看BasicForm的actioncomplete事件 -
http://dev.sencha.com/deploy/dev/docs/?class=Ext.form.BasicForm
您应该只在此事件执行后重定向到此表单应该已提交。
答案 1 :(得分:0)
我发现它,你可以在submit()的参数数组中添加一个“成功函数”,如下所示:
buttons: [{
text: 'Save',
handler: function() {
if(panel_form.getForm().isValid()){
panel_form.getForm().getEl().dom.action = 'backend/page/blocks/edit_positioned_post/17.html';
panel_form.getForm().getEl().dom.method = 'POST';
panel_form.getForm().submit({
success : function(form, action) {
replace_region_with_uri_content('/backend/page');
}
})
} else {
Ext.Msg.minWidth = 360;
Ext.Msg.alert('Invalid Form', 'Some fields are invalid, please correct.');
}
}
},{
text: 'Cancel',
handler: function(){
replace_region_with_uri_content('/backend/page');
}
}]
});