2015-10-29 4 views
1

У меня есть яваскрипта функция, которая вызывает мой яваскрипт функции, моя функ islike это:MessageBox появляется после функции над

function sugParitValidation(){ 
    var isValid = false; 
    Ext.MessageBox.confirm(' ','Are you sure you want to do this?', function(btn){ 
     if(btn == 'yes'){ 
     isValid = true; 
    } 
}); 
return isValid ; 
} 

Моя проблема - если заявление и возвращение Постулаты происходят, и только после этого отображается окно подтверждения. Таким образом, я не могу реагировать на то, что пользователь выбрал. как это решить? попробовал allready использовать setTimeOut, никаких изменений вообще ...

+0

Попробуйте 'window.confirm()'. Этот статус блокируется до ответа пользователя. – San

+1

У вас есть обратный вызов, который вызывается, когда пользователь нажимает кнопки подтверждения. Вы не можете ждать, пока пользователь нажмет кнопку, потому что вы заблокируете весь пользовательский интерфейс. Вы можете вернуть обещание или передать другой метод обратного вызова методу sugParitValidation() и вызвать его, когда пользователь нажимает кнопку, чтобы продолжить поток. –

+0

window.confirm() не подходит для меня, потому что я должен использовать стиль extjs. Я, вероятно, сделаю функцию вызова – InbalIta

ответ

0

Я думаю, вы пытаетесь сделать что-то вроде этого.

someFunction(){ 
    if(sugParitValidation()){ 
      //todo something 
    } 
    else{ 
      //todo another thing 
    } 

} 

Вы можете сделать это легко с помощью обратных вызовов. Это пример.

someFunction(){ 
    var messageCallback = function(btn){ 
      if(btn === 'yes'){ 
       //todo something 
      } 
      else{ 
       //todo another thing 
      } 

    } 
    Ext.MessageBox.confirm(' ','Are you sure you want to do this?', 
    messageCallback); 
} 
Смежные вопросы