gpt4 book ai didi

angularjs - 使用 Angular Material,是否可以关闭特定对话框

转载 作者:行者123 更新时间:2023-12-01 10:33:13 24 4
gpt4 key购买 nike

我有一个使用 Angular Material UI 框架的 AngularJS 应用。

该应用程序有不同的机制来显示对话框(例如错误和加载微调器),最好只关闭在某些情况下特别选择的一个,例如当 AJAX 请求完成获取数据时,我希望我的加载微调器关闭,但不希望关闭任何可能是获取结果的错误对话框。

我在文档和代码中找到的内容并不一致(尽管代码应该赢得争论):

  • Documentation说只有最新的可以关闭,有一个可选的响应
  • The code表示最新,可以关闭多个最新或全部打开,原因可选
  • Example in the documentation表示可以关闭一个特定的对话框,并带有一个标志,表示如何或为什么

我做了一个demo of my intent , 作为 MCV尽可能——这些是亮点:

var dialog = {},
promise = {};

function showDialogs(sourceEvent) {
showDialog(sourceEvent, "one");
showDialog(sourceEvent, "two");
}

function showDialog(sourceEvent, id) {
dialog[id] = $mdDialog.alert({...});

promise[id] = $mdDialog.show(dialog[id]);
promise[id].finally(function() {
dialog[id] = undefined;
});
}

function closeDialogs() {
$mdDialog.hide("Closed all for a reason", {closeAll: true});
}

function closeDialogLatest() {
$mdDialog.hide("Closed from the outside");
}

function closeDialogReason() {
$mdDialog.hide("Closed with a reason");
}

function closeDialogSpecific(id) {
$mdDialog.hide(dialog[id], "finished");
}

编辑:
我知道代码总是会赢得关于发生的事情的争论,但我不完全确定这是我正在查看的正确代码。
我更新了示例以更好地测试和说明我的观点和问题。这显示了代码所说的工作。

我真正想知道的是是否还有可能以我尚未想到的其他方式实现我的目标。

最佳答案

使用 $mdPanel而不是 $mdDialog我能够达到预期的效果;我 fork 了我的 demo反射(reflect)变化——这些是亮点:

var dialog = {};

function showDialogs() {
showDialog("one");
showDialog("two");
}

function showDialog(id) {
var config = {...};

$mdPanel.open(config)
.then(function(panelRef) {
dialog[id] = panelRef;
});
}

function closeDialogs() {
var id;

for(id in dialog) {
closeDialogSpecific(id, "Closed all for a reason");
}
}

function closeDialogSpecific(id, reason) {
var message = reason || "finished: " + id;

if(!dialog.hasOwnProperty(id) || !angular.isObject(dialog[id])) {
return;
}

if(dialog[id] && dialog[id].close) {
dialog[id].close()
.then(function() {
vm.feedback = message;
});
dialog[id] = undefined;
}
}

关于angularjs - 使用 Angular Material,是否可以关闭特定对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39292006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com