我想将这些上一个/下一个主题按钮键盘快捷键制作成一个主题组件,该组件将在标题中提供 « Prev Topic 和 Next Topic » 按钮。
有人能推荐一个现有的主题组件,其中包含一个代码片段,该代码片段提供一个简单地激活现有键盘快捷键的按钮吗?
我将从以下开始:
我想将这些上一个/下一个主题按钮键盘快捷键制作成一个主题组件,该组件将在标题中提供 « Prev Topic 和 Next Topic » 按钮。
有人能推荐一个现有的主题组件,其中包含一个代码片段,该代码片段提供一个简单地激活现有键盘快捷键的按钮吗?
我将从以下开始:
这已经存在了(但专注于 Next)。
这使用了 Core API,应该可以继续工作……
如果您想添加一个带有设置的返回按钮选项,PR 已被接受。
谢谢你,@merefield!我在后退按钮的 JavaScript 代码片段上卡住了(至少我认为是这样
)……
import Component from '@glimmer/component';
import { action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
import {
nextTopicUrl,
previousTopicUrl,
} from "discourse/lib/topic-list-tracker";
import DiscourseURL from "discourse/lib/url";
import { inject as service } from "@ember/service";
export default class TopicPreviousButton extends Component {
@service site;
@tracked label = "";
@tracked showButton = false;
@tracked lastURL = "";
constructor(owner, args) {
super(owner, args);
previousTopicUrl().then((url) => {
if (url) {
this.showButton = true;
this.lastURL = url;
} else {
this.showButton = false;
this.lastURL = "";
}
})
};
get goFirst() {
return settings.topic_next_always_go_to_first_post
}
@action
goToPreviousTopic() {
let url;
if (this.lastURL) {
url = this.goFirst
? this.lastURL.substring(0, this.lastURL.nextIndexOf("/"))
: this.lastURL;
DiscourseURL.routeTo(url);
}
};
}
我认为问题出在底部附近
? this.lastURL.substring(0, this.lastURL.nextIndexOf("/"))
有什么想法吗?
我试过
? this.lastURL.substring(0, this.lastURL.indexOf("/"))
您可能不想为后退按钮创建一个单独的组件,并在同一个组件中处理所有逻辑。只需根据需要扩展现有的模板和 js 文件即可。否则,您可能会得到三个模板而不是一个,这对于这样一个小的“组件”来说似乎太多了?
Hmm… not sure what you are seeing in my code, but I’m just adding code to your existing component ![]()
是的,我们在 Dev 中使用了不同的组件定义 ![]()
这是一个不同的 Glimmer 组件。
所以一个主题组件包含一个 Glimmer 组件。你本来要创建另一个吗?
我建议你编辑同一个文件,这需要两个操作而不是一个。而且也许标签只会在新设置中未激活后退按钮时出现?
谢谢 Robert——我想我明白了。我会试试的。