Ich möchte ein Plugin erstellen, das einen Button anzeigt und eine Aktion ausführt. Der Button kann bereits an der gewünschten Stelle angezeigt werden, aber ich weiß nicht, wie ich eine benutzerdefinierte Aktion dafür erstelle. Die Dateistruktur sieht wie folgt aus:
plugins/discourse-my-plugin
├── assets
│ ├── javascripts
│ │ └── discourse
│ │ ├── initializers
│ │ │ └── my-plugin.js.es6
│ │ └── templates
│ │ └── connectors
│ │ └── user-messages-nav
│ │ ├── actions.js.es6
│ │ └── button.hbs
├── config
└── plugin.rb
initializers/my-plugin.js.es6
import { withPluginApi } from "discourse/lib/plugin-api";
function initializeButton(api) {
api.decoratePluginOutlet('user-messages-nav', (elem, args) => {
...
});
}
export default {
name: "my-button",
initialize() {
withPluginApi("0.8.31", initializeButton);
}
};
button.hbs
{{d-button class="btn-primary" action="submitContent" label="submit_content"}}
Ist es korrekt, meine benutzerdefinierte Aktion wie folgt in actions.js.es6 zu erstellen? Der Fehler lautet: „had no action handler for: submitContent“, aber wie kann ich ihn beheben?
export default {
actions: {
submitContent() {
...
}
}
};