我正在编写一个插件来扩展徽章功能。当管理员徽章页面上的“保存”按钮被按下时,我想执行一些额外的代码。
Discourse Javascript:
Discourse hbs:
我的代码 discourse/plugins/discourse-badge-extension/assets/javascripts/discourse/initializers/modify-admin-badges-show-controller.js:
import { withPluginApi } from 'discourse/lib/plugin-api';
export default {
name: 'modify-admin-badges-show',
initialize() {
withPluginApi('0.8', api => {
api.modifyClass('controller:admin-badges/show', {
pluginId: 'discourse-badge-extension',
actions: {
save() {
console.log("Custom pre-save logic triggered");
alert("Pre-save logic");
this._super(...arguments); // Call the original save method
console.log("Post-save logic triggered");
alert("Post-save logic");
},
}
});
alert("Hello! I am an alert box!!");
});
}
};
这是一个初始化器。
- 警告框
"Hello! I am an alert box!!被触发,表明代码在重新加载时正在运行。 - 保存时,console.log 行或警告框均未运行,表明覆盖不起作用?
- 控制器名称
controller:admin-badges/show不会引发错误(但故意添加拼写错误会引发错误,这表明我正在定位一个真实的控制器)
鉴于这只是一个初始化器,应该很容易重现。我哪里做错了??