Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ngDialog关闭所有活动模态_Angularjs_Ng Dialog - Fatal编程技术网

Angularjs ngDialog关闭所有活动模态

Angularjs ngDialog关闭所有活动模态,angularjs,ng-dialog,Angularjs,Ng Dialog,我对ngDialog()有一个问题,我打开了一个对话框,当用户单击按钮时,它会在顶部弹出另一个模式作为警报。 我想通过按钮关闭警报对话框,但当我使用ngDialog.close()时,它会关闭所有活动模态 我意识到文档中说,如果你不传递一个id,那么它就充当closeAll(),因此我需要给它一个id。因此,当我使用ngDialog.open()时,我给它一个警报id,然后我使用ngDialog.close(“警报”),但是这仍然会关闭所有的模态 我创造了一个plunker来展示我在做什么,它的

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

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

我创造了一个plunker来展示我在做什么,它的行为方式也是一样的

如果你在源代码处检查,它也显示id也没有显示,我怀疑这就是为什么两个模态仍然关闭的原因


谁能解释一下我做错了什么。

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

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

通过将对话框id传递给作用域并加入我的指令,我已经解决了无法获取对话框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.finish = function() {
  ngDialog.close(scope.dialogId);
};

我不打算覆盖closeThisDialog方法,这只是我的方法命名错误,我已将其更改为finish。我的代码背后的想法是所有指令都是自包含的,因此使用$parent可以通过强制指令了解其父指令来打破这一点。对我来说,对话框必须在特定的上下文中,因此它不是真正自包含的。或者您可以这样做,如果(scope.closeThisDialog)scope.closeThisDialog();else作用域。$parent.closeThisDialog();
scope: {
  customerNumber : "@",
  dialogId: "@"
},
scope.finish = function() {
  ngDialog.close(scope.dialogId);
};