确定是否在提示中作为对话框打开
Determine if opened as dialog in prompt
我正在开发 aurelia 应用程序。我有一个组件(这是一个整页组件并且可以导航)并且在另一个页面中,我想使用这个组件作为提示让用户从该页面中进行选择。所以我写了下面的代码来按预期打开它:
selectTaskFromTree(callbackOrSuccess, failure) {
const dialog = this.dialogService
.open({ viewModel: PLATFORM.moduleName('features/view/tree/tree'), model: {}, lock: false });
if (callbackOrSuccess) {
if (failure) {
dialog.whenClosed(response => {
if (!response.wasCancelled) {
callbackOrSuccess(response.output);
} else {
failure(response);
}
});
}
else{
dialog.whenClosed(callbackOrSuccess);
}
return;
}
else{
return dialog;
}
}
因此组件 Tree
现在已成功加载并显示。现在的问题是如何确定 TreeComponent
是否作为对话框打开。
我正在考虑的方法是向它传递一个任意参数,如果参数为真,则状态为对话,否则不是对话:
const dialog = this.dialogService
.open({ viewModel: PLATFORM.moduleName('features/view/tree/tree'), model: {isDialog: true}, lock: false });
但我认为也许还有更好的方法来做到这一点。例如,从 DialogService 询问我是否是对话。那么还有哪些解决方案,哪个更好呢?
要确定您是否有一个打开(或活动)的对话框,您可以询问 DialogService
相关字段:
this.dialogService.hasOpenDialog
this.dialogService.hasActiveDialog
遗憾的是,这无法告诉您哪个 对话框已打开。我认为您将参数传递给模型的想法是一种同样有效的方法。
我考虑过不同的解决方案,我一直在寻求保持低耦合并防止定义新参数。所以我写了下面的代码,我想知道这个组件是否作为对话框打开:
attached() {
this._isDialog = Boolean(this.dialogController.settings);
}
我正在开发 aurelia 应用程序。我有一个组件(这是一个整页组件并且可以导航)并且在另一个页面中,我想使用这个组件作为提示让用户从该页面中进行选择。所以我写了下面的代码来按预期打开它:
selectTaskFromTree(callbackOrSuccess, failure) {
const dialog = this.dialogService
.open({ viewModel: PLATFORM.moduleName('features/view/tree/tree'), model: {}, lock: false });
if (callbackOrSuccess) {
if (failure) {
dialog.whenClosed(response => {
if (!response.wasCancelled) {
callbackOrSuccess(response.output);
} else {
failure(response);
}
});
}
else{
dialog.whenClosed(callbackOrSuccess);
}
return;
}
else{
return dialog;
}
}
因此组件 Tree
现在已成功加载并显示。现在的问题是如何确定 TreeComponent
是否作为对话框打开。
我正在考虑的方法是向它传递一个任意参数,如果参数为真,则状态为对话,否则不是对话:
const dialog = this.dialogService
.open({ viewModel: PLATFORM.moduleName('features/view/tree/tree'), model: {isDialog: true}, lock: false });
但我认为也许还有更好的方法来做到这一点。例如,从 DialogService 询问我是否是对话。那么还有哪些解决方案,哪个更好呢?
要确定您是否有一个打开(或活动)的对话框,您可以询问 DialogService
相关字段:
this.dialogService.hasOpenDialog
this.dialogService.hasActiveDialog
遗憾的是,这无法告诉您哪个 对话框已打开。我认为您将参数传递给模型的想法是一种同样有效的方法。
我考虑过不同的解决方案,我一直在寻求保持低耦合并防止定义新参数。所以我写了下面的代码,我想知道这个组件是否作为对话框打开:
attached() {
this._isDialog = Boolean(this.dialogController.settings);
}