0

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

我意识到文档指出,如果您不传递 id,那么它将充当 closeAll(),因此我需要给它一个 id。因此,当我使用 ngDialog.open() 时,我给它一个警报 ID,然后我使用 ngDialog.close("alert"),但这仍然会关闭所有模态......

我创建了一个 plunker 来尝试展示我在做什么,它的行为方式相同...... http://plnkr.co/0bg1VB7QuEZxIdakfoBr

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

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

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

4

2 回答 2

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

然后在配置文件对话框指令中我有

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

这是在链接部分

scope.finish = function() {
  ngDialog.close(scope.dialogId);
};
于 2016-03-31T01:16:45.810 回答
0

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

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

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

于 2016-03-30T02:27:25.963 回答