确定是否在提示中作为对话框打开

我正在开发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是否作为对话框打开。

我正在考虑的方法是向其传递任意参数,如果该参数为true,则状态为对话,否则为对话:

  const dialog = this.dialogService
      .open({ viewModel: PLATFORM.moduleName('features/view/tree/tree'),model: {isDialog: true},lock: false });

但是我认为也许还有更好的方法可以做到这一点。例如,从DialogService询问我是否是对话框。那么还有哪些其他解决方案?哪种更好?

greattable 回答:确定是否在提示中作为对话框打开

要确定您是否有打开的(或活动的)对话框,可以向DialogService询问相关字段:

this.dialogService.hasOpenDialog
this.dialogService.hasActiveDialog

遗憾的是,这不能告诉您哪个对话框已打开。我认为您将参数传递给模型的想法是同样有效的实现方法。

,

我考虑过不同的解决方案,我一直在寻求保持低耦合并防止定义新参数。因此,我在下面的代码中编写了我想知道该组件是否作为对话框打开的代码:

  attached() {
    this._isDialog = Boolean(this.dialogController.settings);
  }
本文链接:https://www.f2er.com/2834616.html

大家都在问