如何从另一个组件对话框正确调用组件对话框



在过去的一天里我一直在为此而苦苦挣扎,似乎无法让它正常工作。我会分享代码,但我觉得这可能会混淆事情。

我创建了一些需要包含在其他ComponentDialogs(包括主bot.js)中的ComponentDialogs

ComponentDialogA被导入到主bot.js当我执行replaceDialog或beginDialog时,它被称为fine。但是当我尝试从组件对话框A调用ComponentDialogB时,它只是返回到ComponentDialogA的最后一点,并且无法点击ComponentDialogB

所以我的子问题如下:

  1. 我是否需要按顺序为每个组件对话框自定义状态访问器 做我想实现的目标,还是只是为了存储特定的 与该对话框相关的数据,而不是实际的对话框位置
  2. 与第一个相关,我需要一个新的对话框设置每个组件对话框 处理子组件对话框,以使用this.dialogs.add而不是this.addDialog
  3. 我只是愚蠢并搞砸了我的代码吗 地方?

我将尝试简化我的代码,稍后再分享。

非常感谢,

首先,v4.2.x版本的库目前存在一个限制,阻止ComponentDialog以任何方式访问自身外部的对话框。这意味着ComponentDialog内的对话只能开始在该ComponentDialog内与其同级的对话,而永远无法访问外部世界。

4.3.x时间范围内,ComponentDialog也有可能开始"向上"其祖先链的对话。这意味着,对于您的方案,如果ComponentDialogAComponentDialogB都在同一父DialogSet中注册,ComponentDialogA能够调用beginDialog('ComponentDialogB' ...)并找到它。

但需要明确的是,您仍然无法从外部处理ComponentDialog秒内的各个对话框。这意味着,如果你的ComponentDialogB内部有一个SubDialogX,那么外面的东西,比如ComponentDialogA,就不能明确地启动那个"内部"对话。有意义?

最新更新