Angularjs ngDialog关闭所有活动模态
我对ngDialog()有一个问题,我打开了一个对话框,当用户单击按钮时,它会在顶部弹出另一个模式作为警报。 我想通过按钮关闭警报对话框,但当我使用ngDialog.close()时,它会关闭所有活动模态 我意识到文档中说,如果你不传递一个id,那么它就充当closeAll(),因此我需要给它一个id。因此,当我使用ngDialog.open()时,我给它一个警报id,然后我使用ngDialog.close(“警报”),但是这仍然会关闭所有的模态 我创造了一个plunker来展示我在做什么,它的行为方式也是一样的 如果你在源代码处检查,它也显示id也没有显示,我怀疑这就是为什么两个模态仍然关闭的原因Angularjs ngDialog关闭所有活动模态,angularjs,ng-dialog,Angularjs,Ng Dialog,我对ngDialog()有一个问题,我打开了一个对话框,当用户单击按钮时,它会在顶部弹出另一个模式作为警报。 我想通过按钮关闭警报对话框,但当我使用ngDialog.close()时,它会关闭所有活动模态 我意识到文档中说,如果你不传递一个id,那么它就充当closeAll(),因此我需要给它一个id。因此,当我使用ngDialog.open()时,我给它一个警报id,然后我使用ngDialog.close(“警报”),但是这仍然会关闭所有的模态 我创造了一个plunker来展示我在做什么,它的
谁能解释一下我做错了什么。你不应该覆盖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);
};