uibmodalinstance结果/原因/关闭/解雇

时间:2016-10-20 16:23:38

标签: twitter-bootstrap angular-ui-bootstrap

我使用自助模式,但无法利用其全部功能。

我的模态基本上是一个编辑弹出窗口。所以它有保存取消

  • 如果保存 d成功,则应关闭,然后关闭父级 应该路由到另一页。
  • 如果它取消,则应关闭但不会重新路由。

我真正得到的东西:

  • 我抓住了什么/原因'原因'什么时候被解雇
  • 如果我可以用它来决定是否重新路由
  • 关闭/结果/解雇如何一起工作。

我看了很多答案,而我似乎并没有看到他们是如何一起处理的。

        var modalInstance = $uibModal
        .open({
            templateUrl: 'cartModalContent',
            controller: 'cartModalInstanceController',
            controllerAs: 'cartModalVm',
            resolve: {
                payData: vm.PayData
            }
        })
        .closed
            .then(function(){
                    $state.go('layout.package-labels');
             });
        modalInstance.result.then(function () {
            // ??
        });

1 个答案:

答案 0 :(得分:1)

如有疑问always go to the docs。在模态部分,您将找到此文本

  

open方法返回一个模态实例,一个具有以下属性的对象:

     

close(result)(类型:function) - 可用于关闭模态,传递结果。

     

dismiss(reason)(类型:function) - 可用于解散模态,传递理由。

     

result(Type:promise) - 在关闭模态时解决,在解除模态时拒绝。

     

打开(类型:保证) - 在下载内容模板并解析所有变量后打开模态时解析。

     

关闭(类型:保证) - 在关闭模态并完成动画时解析。

     

rendered(Type:promise) - 在渲染模态时解析。

这意味着什么

  1. 当您调用$uibModal.open方法(并将模态定义对象传递给它)时,您将获得一个模态实例
  2. 您可以从模态实例访问多个承诺。这些承诺将根据你对模态的处理行事。
  3. 所以,当你dismiss你的模态时,result承诺会拒绝,当你close时,它会解决你的模态。
  4. 所以你的代码需要看起来像

    var modalInstance = $uibModal.open({
      animation: true,
      templateUrl: 'template.html',
      controller: 'modalCtrl',
      controllerAs: '$ctrl',
      size: size,
      appendTo: parentElem,
      resolve: {
        info: function () {
          return '42';
        }
      }
    });
    
    modalInstance.result.then(function (resolvedResponse) {
      $state.go('whereever')
    }, function (rejectionResponse) {
      // do something else
    });
    

    因为您的用例是一个简单的确定/取消对话框,您可以使用内置的close / dismiss表达式

    <button class="btn btn-primary" type="button" ng-click="$close('ok')">OK</button>
    <button class="btn btn-warning" type="button" ng-click="$dismiss('cancel')">Cancel</button> 
    

    当你关闭模态时

    modalInstance.result.then(function (resolvedResponse) {
       // resolvedResponse = 'ok'
    }, function (rejectionResponse) {
       // rejectionResponse = 'cancel'
    });