例如:
api.addCommunitySectionLink({
name: "intersection-navigator",
route:"tags.intersection",
title: I18n.t("tag_intersection_navigator.link.title"),
text: I18n.t("tag_intersection_navigator.link.text")
})
… 将会失败,因为该路由需要一个 tag_id。
我尝试添加:
params: { tag_id: siteSettings.discourse_tag_intersection_navigator_all_word },
model: { tag_id: siteSettings.discourse_tag_intersection_navigator_all_word },
… 但我强烈怀疑这没有被 API 按需处理 …
4 个赞
具体来说,我认为是在这里:discourse/app/assets/javascripts/discourse/app/lib/sidebar/custom-community-section-links.js at d0c3f3b8fe6905e7e33ae4944cdf44c11ccc0df6 · discourse/discourse · GitHub
如果我们添加这个,它应该可以工作:
get models() {
return args.models;
}
3 个赞
哦,既然有一个 typeof args === "function" 条件,你可以立即执行类似这样的操作:
api.addCommunitySectionLink((Base) =>
class CustomLink extends Base {
get name() {
return "intersection-navigator";
}
get route() {
return "tag.show";
}
get models() {
return ["tagid"];
}
get title() {
return I18n.t("tag_intersection_navigator.link.title");
}
get text() {
return I18n.t("tag_intersection_navigator.link.text");
}
}
);
1 个赞
是的,我已经在这么做了……但在流程的后面有些奇怪的事情发生了。
1 个赞
由于某些原因,这不太对劲,并且点击时出现关于缺少 postStream 的抱怨:
api.addCommunitySectionLink((baseSectionLink) => {
return class CustomSectionLink extends baseSectionLink {
get name() {
return "intersection-navigator";
}
get route() {
return "tags.intersection";
}
get models() {
return [{tag_id: siteSettings.discourse_tag_intersection_navigator_all_word}];
}
get title() {
return I18n.t("tag_intersection_navigator.link.title")
}
get text() {
return I18n.t("tag_intersection_navigator.link.text");
}
};
});
这几乎就像您需要包含当前路由的模型一样,这很奇怪!
1 个赞
该设置的输出是什么?当我手动执行以下操作时,它似乎工作正常:
get models() {
return ["featured", "tv"];
}
2 个赞
是的,可以,这真的很有帮助,谢谢!
设置只是一个字符串。我想我考虑得太多了。
查询参数的名称"models"不是100%直观吗?
你的PR会让这个更简洁,干杯!
2 个赞
是的,我一开始也不清楚,但这是因为它最终使用了 Ember 的 LinkTo 组件,该组件需要一个 model 参数……
1 个赞
system
(system)
关闭
11
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.