RGJ
(Richard - Communiteq)
1
在稳定版 3.4.1 上。
我的插件中有这个文件
/assets/javascripts/discourse/controllers/user-feedback.js
然后
/assets/javascripts/discourse/templates/user-feedback.hbs 包含
{{feedback-stream stream=this.model}}
然后是这些文件:
/assets/javascripts/discourse/components/feedback-stream.js
/assets/javascripts/discourse/templates/components/feedback-stream.hbs
这是我在浏览器控制台中看到的错误。
/discourse/templates/components/feedback-stream] feedback-stream 是使用 gjs 编写的,其模板无法被覆盖。正在忽略覆盖。有关模板覆盖未来的更多信息,请参阅 https://meta.discourse.org/t/247487
但是,正如您所见,它不是使用 gjs 编写的。
现在我决定暂时忽略此错误,并继续现代化插件。一旦我将模板放在一起(mv templates/components/* components),错误就消失了。但模板仍然被忽略。
2 个赞
RGJ
(Richard - Communiteq)
2
好的,这些零散的信息似乎开始联系起来了。
该组件是
export default class FeedbackStream extends UserStream {
而 UserStream 是使用 gjs 编写的。
撇开错误的错误消息不谈,我该如何对其进行现代化改造并使其恢复工作?
1 个赞
RGJ
(Richard - Communiteq)
4
我当前更改的目的是让插件在最新的稳定版本上恢复工作 
此插件特定部分的目的,是在用户个人资料页面上显示反馈,同时大量重用现有组件。
david
(David Taylor)
5
如果您为 FeedbackStream 使用 gjs,我认为它应该可以工作。所以它会是这样的:
export default class FeedbackStream extends UserStream {
<template>
Your custom template here
</template>
}
我认为在同一个组件继承链中混合使用 hbs/gjs 可能效果不佳。
3 个赞
david
(David Taylor)
6
顺便说一句 @Arkshine 我看到了你的
- 所以我在这里澄清一下。模板覆盖已被弃用,无论原始创作格式如何。我们将在未来几个月内完全移除它们。对于那些情况,你 100% 正确,插件出口是解决方案。
但是 @RGJ 在这里所做的不是模板覆盖,而是使用了 Ember 的组件继承系统。而不是这样做
class Foo extends Component
你可以这样做
class Foo extends SomeOtherComponent
在这种情况下,你的组件将继承 SomeOtherComponent 的模板,或者你可以选择自己替换模板。你的模板替换仅适用于 Foo,不会影响父级 SomeOtherComponent。
不过,这种继承是一种很少使用的功能。我们倾向于使用“组合”,即在模板中将组件互相包装。(例如,DModal 就是这样使用的)。
5 个赞
哦,我明白了;谢谢澄清!我之前没有看到这里的继承关系。说得通。
3 个赞
RGJ
(Richard - Communiteq)
关闭
9
该话题在最后回复后30天自动关闭。不再允许新回复。