首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单击esc/esc时Angularjs引导模式关闭调用

单击esc/esc时Angularjs引导模式关闭调用
EN

Stack Overflow用户
提问于 2015-05-20 17:46:26
回答 5查看 51.7K关注 0票数 26

我在我的项目中使用角用户界面/引导模式。

这是我的模式:

代码语言:javascript
运行
复制
$scope.toggleModal = function () {
    $scope.theModal = $modal.open({
        animation: true,
        templateUrl: 'pages/templates/modal.html',
        size: "sm",
        scope: $scope
    });
}

可以通过单击ESC按钮或单击模态区域外部来关闭模态。在发生这种情况时,是否有一种运行函数的方法?我不太清楚怎样才能赶上这样的结束。

我知道,通过拥有这样的ng-click="closeModal()",我可以手动取消一个模式:

代码语言:javascript
运行
复制
$scope.closeModal = function () {
    $scope.theModal.dismiss('cancel');
};
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-05-20 17:53:46

是的你可以。这会导致解雇事件,在这种情况下,承诺被拒绝。另外,请注意,$modal.open()方法返回一个具有result属性的对象。

有了承诺你可以..。

代码语言:javascript
运行
复制
//This will run when modal dismisses itself when clicked outside or
//when you explicitly dismiss the modal using .dismiss function.
$scope.theModal.result.catch(function(){
    //Do stuff with respect to dismissal
});

//Runs when modal is closed without being dismissed, i.e when you close it
//via $scope.theModal.close(...);
$scope.theModal.result.then(function(datapassedinwhileclosing){
    //Do stuff with respect to closure
});

作为一种快捷方式,您可以编写:

代码语言:javascript
运行
复制
 $scope.theModal.result.then(doClosureFn, doDismissFn);

见参考文献

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

  • 关闭(结果)-一种可以用来关闭一个模态,传递一个结果的方法
  • 驳回(理由)--一种可以用来消除情态,传递理由的方法
  • 结果-当一个模态被关闭,当一个模态被拒绝时,这个承诺就会被解决。
  • opened -在下载内容的模板并解析所有变量‘呈现’之后,当一个模式被打开时,这个承诺就会被解决--这个承诺在呈现一个模式时被解决。
票数 30
EN

Stack Overflow用户

发布于 2016-03-16 11:55:37

老问题,但是如果要在各种关闭操作上添加确认对话框,请将其添加到模态实例控制器中:

代码语言:javascript
运行
复制
$scope.$on('modal.closing', function(event, reason, closed) {
    console.log('modal.closing: ' + (closed ? 'close' : 'dismiss') + '(' + reason + ')');
    var message = "You are about to leave the edit view. Uncaught reason. Are you sure?";
    switch (reason){
        // clicked outside
        case "backdrop click":
            message = "Any changes will be lost, are you sure?";
            break;

        // cancel button
        case "cancel":
            message = "Any changes will be lost, are you sure?";
            break;

        // escape key
        case "escape key press":
            message = "Any changes will be lost, are you sure?";
            break;
    }
    if (!confirm(message)) {
        event.preventDefault();
    }
});

我的右上角有一个关闭按钮,它触发了“取消”操作。单击背景(如果启用),将触发取消操作。您可以使用它对各种关闭事件使用不同的消息。我想我应该和大家分享一下,以防对别人有帮助。

票数 25
EN

Stack Overflow用户

发布于 2015-05-20 17:57:05

您可以使用$modal.open()方法返回的“结果”承诺。如下所示:

代码语言:javascript
运行
复制
 $scope.toggleModal = function () {
      $scope.theModal = $modal.open({
          animation: true,
          templateUrl: 'pages/templates/modal.html',
          size: "sm",
          scope: $scope
      });

      $scope.theModal.result.then(function(){
          console.log("Modal Closed!!!");
      }, function(){
          console.log("Modal Dismissed!!!");
      });
 }

您还可以使用“结果”的“最终”回调,如下所示:

代码语言:javascript
运行
复制
     $scope.theModal.result.finally(function(){
          console.log("Modal Closed!!!");
      });
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30356844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档