【问题标题】:uibmodalinstance result/reason/close/dismissuibmodalinstance 结果/原因/关闭/关闭
【发布时间】:2016-10-20 16:23:37
【问题描述】:

我正在使用引导模式,但无法利用它们的全部功能。

我的模式基本上是一个编辑弹出窗口。所以它有一个Save和一个Cancel

  • 如果是Saved,成功的话,应该先关闭然后再关闭父 应该路由到另一个页面。
  • 如果它被取消,它应该关闭但不能重新路由。

我没有真正得到的东西:

  • 我在什么/哪里捕捉到“原因”被驳回
  • 如果我可以使用它来决定是否重新路由
  • 关闭/结果/解雇如何协同工作。

我查看了一堆答案,但我似乎没有看到它们是如何一起处理的。

        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 () {
            // ??
        });

【问题讨论】:

    标签: twitter-bootstrap angular-ui-bootstrap


    【解决方案1】:

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

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

    close(result) (Type: function) - 可以用来关闭一个模态,传递一个结果。

    dismiss(reason) (Type: function) - 可以用来关闭一个模态,传递一个原因。

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

    opened (Type: promise) - 在下载内容模板并解析所有变量后打开模式时解析。

    已关闭(类型:promise)- 当模式关闭且动画完成时解决。

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

    什么意思

    1. 当您调用$uibModal.open 方法(并将模态定义对象传递给它)时,您将获得一个模态实例
    2. 您可以从模态实例中访问多个 Promise。这些承诺将根据您对模态的操作而起作用。
    3. 因此,当您 dismiss 模态时,result 承诺将拒绝,而当您 close 模态时,它将解决。

    所以你的代码需要看起来像

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-18
      • 2012-03-26
      • 2013-04-08
      • 2015-07-20
      • 1970-01-01
      • 2010-09-11
      • 2018-04-12
      相关资源
      最近更新 更多