嘿 @Johani,关于“如何触发或被触发”这个问题的另一个版本是:我在一个插件中使用了 Custom Header Links 的某个版本。它链接到由我的插件添加的独立模型中创建的一些项目(“服务器”)。当创建一个 server 时,我希望重新构建头部链接,使其指向最近创建的两个服务器。我现在在一个初始化器中实现这个功能,它运行正常,但只有在添加服务器后刷新页面才能更新。
你之前教过我如何添加和监听触发器,所以我以为也许能解决这个问题,但执行该工作的页面位于 discourse-subscriptions 中。也许我想做的是向 discourse-subscriptions 提交一个 PR,在其中添加:
this.appEvents.trigger("purchase-complete")
在购买完成后(购买操作会触发将用户添加到某个组,进而触发创建服务器并将用户从该组中移除)。或者,如果能在购买完成后,或者在用户点击“购买完成”模态框中的“确定”按钮时直接触发页面刷新,那也很好,但我不知道该如何实现(我之前尝试的方法导致页面无限循环刷新……)
所以,也许可以在这段代码中:
在将 loading 设置为 false 之后,添加:
this.appEvents.trigger("successful-transaction")
然后我可以在我的初始化器中添加:
this.appEvents.on("successful-transaction")
来执行头部链接的操作?
我想一旦我这样做,就需要采用不同的方式,因为我担心这段代码:
api.decorateWidget("header-buttons:before", (helper) => {
return helper.h("ul.pfaffmanager-header-links", headerLinks);
});
是在 header-buttons:before 位置添加内容而不是替换它们,所以每次触发时我都会得到更多的链接?