首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ng-click - AngularJS上的确认对话框

ng-click - AngularJS上的确认对话框
EN

Stack Overflow用户
提问于 2013-08-19 20:15:09
回答 11查看 250.5K关注 0票数 86

我正在尝试使用自定义的angularjs指令在ng-click上设置确认对话框:

代码语言:javascript
复制
app.directive('ngConfirmClick', [
    function(){
        return {
            priority: 1,
            terminal: true,
            link: function (scope, element, attr) {
                var msg = attr.ngConfirmClick || "Are you sure?";
                var clickAction = attr.ngClick;
                element.bind('click',function (event) {
                    if ( window.confirm(msg) ) {
                        scope.$eval(clickAction)
                    }
                });
            }
        };
}])

这很有效,但不幸的是,使用我的指令的标记内的表达式不会被求值:

代码语言:javascript
复制
<button ng-click="sayHi()" ng-confirm-click="Would you like to say hi?">Say hi to {{ name }}</button>

(这种情况下不计算名称)。这似乎是由于我的指令的终端参数造成的。您有任何解决方法的想法吗?

要测试我的代码:http://plnkr.co/edit/EHmRpfwsgSfEFVMgRLgj?p=preview

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2013-08-19 20:36:10

如果你不介意不使用ng-click,它工作得很好。您可以将其重命名为其他名称,同时仍然读取该属性,同时避免当前存在的两次触发单击处理程序的问题。

http://plnkr.co/edit/YWr6o2?p=preview

我认为问题在于terminal指示其他指令不运行。与{{ }}的数据绑定只是ng-bind指令的别名,该指令可能已被terminal取消。

票数 93
EN

Stack Overflow用户

发布于 2015-06-08 19:21:40

使用核心javascript + angular js非常简单:

代码语言:javascript
复制
$scope.delete = function(id) 
    { 
       if (confirm("Are you sure?"))
           {
                //do your process of delete using angular js.
           }
   }

如果单击确定,则执行删除操作,否则不执行删除操作。* id是您要删除的参数,记录。

票数 11
EN

Stack Overflow用户

发布于 2014-03-12 12:05:03

您不想使用terminal: false,因为它阻塞了按钮内部的处理。取而代之的是,在link中清除attr.ngClick以防止默认行为。

http://plnkr.co/edit/EySy8wpeQ02UHGPBAIvg?p=preview

代码语言:javascript
复制
app.directive('ngConfirmClick', [
  function() {
    return {
      priority: 1,
      link: function(scope, element, attr) {
        var msg = attr.ngConfirmClick || "Are you sure?";
        var clickAction = attr.ngClick;
        attr.ngClick = "";
        element.bind('click', function(event) {
          if (window.confirm(msg)) {
            scope.$eval(clickAction)
          }
        });
      }
    };
  }
]);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18313576

复制
相关文章

相似问题

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