Quiero ejecutar una función Ext.Msg.show() sincrónicamente en ExtJs-5
onButtonClick : function() { 1. some code... 2. Ext.Msg.show({ title : 'Confirm Please', msg : 'Please be informed that record will only save when click ok.', buttons : Ext.Msg.OKCANCEL, icon : Ext.Msg.QUESTION, fn : function(btn) { if ('cancel' === btn) { return; } } }); 3. other message box ... 4. other code ... }La función anterior ejecuta sincrónicamente cada paso 1, 2, 3 y 4, pero no espera la interacción del usuario en el paso 2. Se mueve directamente al paso 3 y luego al paso 4. Pero quiero ejecutar el paso 3 solo cuando el usuario hace clic en ok, de lo contrario, finalice otros pasos a continuación.
¿Alguien puede verificar y decirme el posible código que debo agregar para que sea posible? Gracias
Hay una forma más fácil e integrada de lograr una ventana de confirmación: Ext.Msg.confirm .
Recuerde que una "confirmación" en ExtJs es ASINCRÓNICA en comparación con la de javascript puro. Entonces, su paso 3/4 debe moverse al bloque de condición btnId==yes :
A continuación un ejemplo:
Ext.Msg.confirm("Confirm", "Are you sure?", function(btnId){ if(btnId == "yes"){ // User clicked YES // Move here step 3/4 } else { // User clicked NO } });Consejo adicional : nada le impide anidar una confirmación en una confirmación como esta:
// Confirm #1 Ext.Msg.confirm("Confirm", "Are you sure?", function(btnId){ if(btnId == "yes"){ // User clicked YES // Confirm #2 Ext.Msg.confirm("Confirm", "Are you REAAALLY sure?", function(btnId){ if(btnId == "yes"){ // User clicked YES } else { // User clicked NO } }); } else { // User clicked NO } });