2010-12-23 2 views
0

ich eine Ext.FormPanel haben, die eine Save Taste hat, die angeblich zwei Dinge in dieser Reihenfolge zu tun: (1) Post die Daten, (2) zurück auf die Seite, von wo aus sie aufgerufen wurde.Wie kann sichergestellt werden, dass eine Funktion erst ausgeführt wird, wenn Ext.FormPanel seine Daten erfolgreich übermittelt hat?

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'); 
     } 
    }] 

Doch was tatsächlich geschieht rückwärts ist, wie ich in Firebug sehen kann, dh es (1) geht zurück, und (2) Beiträge die Daten, die zu der Situation führt, dass die Raster, das es zu zurückgibt, zeigt die aktualisierten Daten nicht an.

alt text

Wie kann ich es zwingen replace_region_with_uri_content() nur auszuführen, nachdem panel_form.getForm().submit() abgeschlossen ist, das heißt, durch die erste Funktion als Rückruf des zweiten Senden?

Antwort

0

ich es gefunden haben, können Sie eine „Erfolgsfunktion“ in den Parameter-Array von submit() wie folgt hinzufügen:

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'); 
      } 
     }] 
}); 
+0

Yeh, die auch getan werden kann :) – Lloyd

Verwandte Themen