【问题标题】:angular ui bootstrap: promise resolved/rejected when modal closedangular ui bootstrap:模式关闭时承诺已解决/拒绝
【发布时间】:2015-06-01 17:24:41
【问题描述】:

我正在使用 angular-ui-bootstrap 桥接库处理 angular 和 bootstap。我想要实现的目标是重用modal component 并将其包装在一个promise 中,当模式成功关闭(按下OK 按钮时)或拒绝(按下或单击cancel 按钮外部时)模态)。

据我所知,有来自桥库的$modal 服务,它只有一种方法可用:open(options)。还有内置的angular promise implementation:$q。我正在寻找如何将两者结合起来的方法。

我想要一个自定义组件(服务,工厂?),它会提供一个startFlow 方法来返回一个承诺。调用 startFlow 也会打开引导模式。当模态关闭(正面或负面)时,promise 将被解决或拒绝。

有人可以提示如何实现吗?到目前为止,我还没有找到现有的解决方案......

【问题讨论】:

    标签: javascript angularjs twitter-bootstrap promise angular-promise


    【解决方案1】:

    open 返回的对象上的 result 属性是一个承诺,其行为与您描述的完全一样。事实上,https://angular-ui.github.io/bootstrap/#/modal 文档中的示例使用了它:

    var modalInstance = $modal.open({
      templateUrl: 'myModalContent.html',
      controller: 'ModalInstanceCtrl',
      size: size,
      resolve: {
        items: function () {
          return $scope.items;
        }
      }
    });
    
    modalInstance.result.then(function (selectedItem) {
      $scope.selected = selectedItem;
    }, function () {
      $log.info('Modal dismissed at: ' + new Date());
    });
    

    可以看到在这个 Plunker http://plnkr.co/edit/ro5Dnkg0p9wYWlMCRqlN?p=preview 中工作

    【讨论】:

    • 好答案。 Google/angular 可以通过将属性命名为 .promise 而不是 .result 来让每个人的生活更轻松,这是不可想象的。
    猜你喜欢
    • 2013-06-22
    • 2023-03-26
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2018-11-20
    • 2019-08-06
    相关资源
    最近更新 更多