你好,
关于此问题的后续:我已按照建议创建了 minimal-modal-test 插件。
-
成功: 当测试插件的模态组件 (
minimal-modal.gjs) 只包含基本元素时(例如<p>、<textarea>、核心<DModal>、<DButton>,甚至像#if用于条件块或if用于提交按钮的图标等内置助手),通过post-menu-buttons值转换器添加的按钮组件触发modal.show()时,它可以正确渲染而不会出错。这证实了基本模态服务、组件渲染、值转换器和内置助手在我的环境中(Discourse v3.5.0.beta3-dev)单独使用时似乎是有效的。 -
失败: 一旦我将子组件
<StarRatingInput>添加回模态的模板(minimal-modal.gjs或feedback-form-modal.gjs)中,错误(TypeError: userProvidedCallback is undefined/ 之前是Attempted to use a value as a helper... undefined)就会一致地再次出现。
我已确保 StarRatingInput 组件本身使用了早期确定的解决方法(内联 SVG 而不是 dIcon 助手,箭头函数用于 starClass 等方法以修复 this 上下文,标准 JS Array.from 而不是 range 助手)。StarRatingInput 的内部代码现在似乎是正确的。
这表明错误是由在此特定渲染上下文中,在父模态组件内渲染嵌套的 <StarRatingInput> 组件(其中包含 #each 循环、动态类绑定和事件处理程序)触发的。
复现步骤
-
你正在运行最新的 Discourse 开发环境版本。
-
以任何用户身份登录。
-
导航到任何主题并查看第一个帖子。
-
点击添加到帖子菜单的 “测试失败模态” 按钮。
-
打开浏览器的开发者控制台。
预期结果
应该出现一个简单的模态对话框,其中包含一个星级评分输入。
实际结果
模态完全无法渲染。浏览器控制台显示错误。