在过去的一天里我一直在为此而苦苦挣扎,似乎无法让它正常工作。我会分享代码,但我觉得这可能会混淆事情。
我创建了一些需要包含在其他ComponentDialogs
(包括主bot.js
)中的ComponentDialogs
。
ComponentDialogA被导入到主bot.js
当我执行replaceDialog或beginDialog时,它被称为fine。但是当我尝试从组件对话框A调用ComponentDialogB时,它只是返回到ComponentDialogA的最后一点,并且无法点击ComponentDialogB。
所以我的子问题如下:
- 我是否需要按顺序为每个组件对话框自定义状态访问器 做我想实现的目标,还是只是为了存储特定的 与该对话框相关的数据,而不是实际的对话框位置
- 与第一个相关,我需要一个新的对话框设置每个组件对话框 处理子组件对话框,以使用
this.dialogs.add
而不是this.addDialog
? - 我只是愚蠢并搞砸了我的代码吗 地方?
我将尝试简化我的代码,稍后再分享。
非常感谢,
首先,v4.2.x
版本的库目前存在一个限制,阻止ComponentDialog
以任何方式访问自身外部的对话框。这意味着ComponentDialog
内的对话只能开始在该ComponentDialog
内与其同级的对话,而永远无法访问外部世界。
在4.3.x
时间范围内,ComponentDialog
也有可能开始"向上"其祖先链的对话。这意味着,对于您的方案,如果ComponentDialogA
和ComponentDialogB
都在同一父DialogSet
中注册,ComponentDialogA
将能够调用beginDialog('ComponentDialogB' ...)
并找到它。
但需要明确的是,您仍然无法从外部处理ComponentDialog
秒内的各个对话框。这意味着,如果你的ComponentDialogB
内部有一个SubDialogX
,那么外面的东西,比如ComponentDialogA
,就不能明确地启动那个"内部"对话。有意义?