ngDialog关闭所有活动模态

时间:2016-03-30 01:54:30

标签: angularjs ng-dialog

我遇到了ngDialog(https://github.com/likeastore/ngDialog)的问题,我打开了一个对话框,当用户点击一个按钮时,它会弹出另一个模态作为警告。 我想通过一个按钮关闭警告对话框但是当我使用ngDialog.close()时会关闭所有活动模态。

我意识到文档声明如果你没有传递id,那么它就像closeAll()一样,因此我需要给它一个id。因此,当我使用ngDialog.open()时,我给它一个警报ID,然后我使用ngDialog.close(“alert”),但是这仍然会关闭所有模态....

我已经创建了一个试图展示我正在做的事情并且它的行为方式相同... ... http://plnkr.co/0bg1VB7QuEZxIdakfoBr

scope.closeThisDialog = function() {
  ngDialog.close("secondDialog");
};

如果你在源头检查它也显示id也没有出现,我怀疑这就是为什么两个模态都在关闭的原因。

任何人都可以了解我做错了什么。

2 个答案:

答案 0 :(得分:0)

您不应该覆盖closeThisDialog方法。文档说“.closeThisDialog(value)方法被注入到传递$ scope。”,因为你的指令有自己的scople,你应该能够从父范围中找到注入的方法。因此,您的方法应该更改为如下所示。

scope.closeThisDialog = function() {
    //ngDialog.close("secondDialog");
    scope.$parent.closeThisDialog();
  };

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

答案 1 :(得分:0)

我无法通过将其传递到范围并加入我的指令来获取对话框ID

scope.openProfileDialog = function() {
  var profileDialogScope = scope.$new();
  profileDialogScope.customerNumber = scope.customerNumber;

  var profileDialog = ngDialog.open({
      plain: true,
      template: "<profile-dialog customer-number='{{ customerNumber }}' dialog-id='{{dialogId}}'></profile-dialog>",
      closeByDocument : false,
      name: "profileDialog",
      scope: profileDialogScope,
      id: "profileDialog"
  });

  profileDialogScope.dialogId = profileDialog.id;
};

然后在profile-dialog指令中我有

scope: {
  customerNumber : "@",
  dialogId: "@"
},

,这是在链接部分

scope.finish = function() {
  ngDialog.close(scope.dialogId);
};