【问题标题】:Close modal dialog programmatically from $http promise从 $http 承诺以编程方式关闭模式对话框
【发布时间】:2021-10-11 09:41:13
【问题描述】:

我将Bootstrap UI 与AngularJS 结合使用以显示模式对话框,同时正在处理$http 请求。把它想象成一个等待对话框。我想将代码保留为一个简单的四行代码,我可以将其放在不同的位置,如下所示:

$scope.foobar = function() {
  var waitDialog = $uibModal.open({ templateUrl: 'waitDialog.html' });
  waitDialog.result.catch(function() { /** Rejection ignored */ });

  MyService.doSomething()
  .then(function onSuccess(response) {
    waitDialog.dismiss('Success.');
    // ...
  })
  .catch(function onError(response) {
    waitDialog.dismiss('Failed.');
  });
};

大部分时间这都能正常工作,但有时模态对话框不会以编程方式关闭。即使 HTTP 请求返回了结果,它仍保持打开状态。我在对话框中添加了一个关闭按钮,因此用户仍然可以通过手动调用$dismiss() 来关闭它。

但是,我不明白为什么对话框并不总是以编程方式关闭。我知道$http 返回一个承诺并且可能会有延迟。但是我已经通过将waitDialog 对象打印到控制台来调试代码,它似乎总是既定义又相同的对象。我没有看到任何范围问题。 我错过了什么?

【问题讨论】:

    标签: angularjs modal-dialog httprequest angular-ui angular-ui-modal


    【解决方案1】:

    模态框在打开之前不能关闭,所以应该是waitDialog.opened.then(() => waitDialog.dismiss())

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 2021-02-25
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多