Javascript HTML - 部件

您好,如果我想在汉堡菜单中添加一个无序列表,其中包含我通过单击或鼠标悬停看到的子菜单,我应该这样做还是有更有效的方法?

我可以将单个项目添加到汉堡菜单中,但需要为它们提供子项目,这些子项目将在悬停时显示。

您能给我一些建议吗?谢谢

<script type="text/discourse-plugin" version="0.1">
  api.decorateWidget('menu-links:before', helper => {
    return helper.h("li", [
    helper.h("a.google", {
        href:"https://google.com",
        title: "Google",
        }, helper.h('p', 'Google')),
    ]);
  });
</script>

编辑:已解决

但还有一件事,如何添加 target blank?

2 个赞

返回一个小部件:

您可以执行的操作是向 api.decorateWidget 返回您自己的自定义小部件,这将为您在应用属性、状态、操作等方面提供更大的控制权。

所以您可以这样做:

api.decorateWidget('menu-links:before', helper => {
   return helper.widget.attach("custom-menu-links");
});

然后,在 javascripts/discourse/widgets/custom-menu-links.js 中,使用 createWidget 助手创建一个小部件:

import { createWidget } from 'discourse/widgets/widget';

createWidget('custom-menu-links', {
...
});

请查看此主题以了解小部件的一些功能:

我在我的下拉标题主题组件中大量使用了小部件,您可能会发现一些代码很有帮助。

添加 target=“_blank”

您将其添加到 attributes 对象:

      return helper.h('a.google',
        {
          attributes: {
            href: "https://google.com",
            target: "_blank",
            title: "Google"
          },
        }
        ...
      );
2 个赞