将「上一篇/下一篇主题」的键盘快捷键制作成主题组件

我想将这些上一个/下一个主题按钮键盘快捷键制作成一个主题组件,该组件将在标题中提供 « Prev TopicNext Topic » 按钮。

有人能推荐一个现有的主题组件,其中包含一个代码片段,该代码片段提供一个简单地激活现有键盘快捷键的按钮吗?

我将从以下开始:

1 个赞

这已经存在了(但专注于 Next)。

这使用了 Core API,应该可以继续工作……

如果您想添加一个带有设置的返回按钮选项,PR 已被接受。

4 个赞

谢谢你,@merefield!我在后退按钮的 JavaScript 代码片段上卡住了(至少我认为是这样 :nerd_face: )……

discourse-tc-topic-next-button/javascripts/discourse/components/topic-previous-button.js at master · denvergeeks/discourse-tc-topic-next-button · GitHub 在这里,目前我有这个……

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 :grinning:

是的,我们在 Dev 中使用了不同的组件定义 :slight_smile:

这是一个不同的 Glimmer 组件。

所以一个主题组件包含一个 Glimmer 组件。你本来要创建另一个吗?

我建议你编辑同一个文件,这需要两个操作而不是一个。而且也许标签只会在新设置中未激活后退按钮时出现?

谢谢 Robert——我想我明白了。我会试试的。

1 个赞