【问题标题】:MessageBox shown after function is over功能结束后显示的MessageBox
【发布时间】:2015-10-29 10:00:11
【问题描述】:

我有一个调用我的javascript函数的javascript函数,我的函数是这样的:

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 ;
}

我的问题是 - if 语句和 return 语句正在发生,然后才显示确认窗口。 这样我就无法对用户选择的内容做出反应。 如何解决这个问题?已经尝试过使用setTimeOut,完全没有变化......

【问题讨论】:

  • 试试window.confirm()。此语句将阻止直到用户响应。
  • 您有一个回调,当用户单击确认按钮时会调用该回调。你不能等到用户按下按钮,因为你会阻塞整个 UI。您可以返回一个承诺或将另一个回调传递给 sugParitValidation() 方法,并在用户单击按钮以继续流程时调用它。
  • window.confirm() 对我不好,因为我必须使用 extjs 样式。我可能会调用函数

标签: javascript extjs extjs4.1


【解决方案1】:

我认为你正在尝试做这样的事情。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2021-07-02
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多