繁体   English   中英

如何在模态关闭之前如何在angular-ui $ modal *中执行回调?

[英]How do I execute a callback in angular-ui $modal *before* the modal closes?

angular-ui $modal支持使用modalInstance.result.then(closeFn,dismissFn)关闭或解除窗口的modalInstance.result.then(closeFn,dismissFn)

因此,如果我使用模态收集新项目的信息,那么我可以这样做:

        modalInstance.result.then(function (item) {
          new Item(item).$save(); // or similar
        }, function () {
        });             

和HTML代码段:

    <button class="btn btn-primary" ng-click="$close(item)">Save</button>
    <button class="btn btn-warning" ng-click="$dismiss()">Cancel</button>

但是新项目可能存在冲突,或者在服务器端可能无效,或许多其他事情。 在模态本身关闭之前 ,有什么办法可以解决这个问题吗? 我想抓住“是”(或“关闭”)点击,运行我的fn做new Item(item).$save() ,然后:

  • 如果成功,继续关闭模态
  • 如果失败,请突出显示错误消息

我知道我可以在按钮上使用不同的ng-click ,并在$modal控制器中捕获它,如下所示:

    <button class="btn btn-primary" ng-click="save(item)">Save</button>

和代码:

        var modalInstance = $modal.open({
          templateUrl: '/partials/createItem.html',
          controller: function ($scope) {
                    $scope.save = function(item) {
                        new Item(item).$save().then(function(){
                            modalInstance.close();
                        });
                    };

          }
        });

但是有没有更多标准的方法来预先捕捉近距离事件?

angular-ui的$close实际上是一个标准的角度延迟对象。 你无法捕捉正在进行的$ close事件,所以实际上你的第二个决定是正确的。 使用提交按钮的重新保护

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM