diff --git a/app/assets/javascripts/discourse/app/components/plugin-connector.js b/app/assets/javascripts/discourse/app/components/plugin-connector.js
index abf6d89f119..22f5252e053 100644
--- a/app/assets/javascripts/discourse/app/components/plugin-connector.js
+++ b/app/assets/javascripts/discourse/app/components/plugin-connector.js
@@ -51,7 +51,7 @@ export default Component.extend({
this.set("actions", connectorClass.actions);
for (const [name, action] of Object.entries(this.actions)) {
- this.set(name, action);
+ this.set(name, action.bind(this));
}
const merged = buildArgsWithDeprecations(args, deprecatedArgs);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/plugin-outlet-connector-class-test.js b/app/assets/javascripts/discourse/tests/acceptance/plugin-outlet-connector-class-test.js
index 19e6c5d4015..712a07fa13d 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/plugin-outlet-connector-class-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/plugin-outlet-connector-class-test.js
@@ -18,7 +18,7 @@ acceptance("Plugin Outlet - Connector Class", function (needs) {
extraConnectorClass("user-profile-primary/hello", {
actions: {
sayHello() {
- this.set("hello", "hello!");
+ this.set("hello", `${this.hello || ""}hello!`);
},
},
});
@@ -53,6 +53,7 @@ acceptance("Plugin Outlet - Connector Class", function (needs) {
`${PREFIX}/user-profile-primary/hello`
] = hbs`{{model.username}}
+
{{hello}}`;
Ember.TEMPLATES[
`${PREFIX}/user-profile-primary/hi`
@@ -87,6 +88,12 @@ acceptance("Plugin Outlet - Connector Class", function (needs) {
"hello!",
"actions delegate properly"
);
+ await click(".say-hello-using-this");
+ assert.strictEqual(
+ query(".hello-result").innerText,
+ "hello!hello!",
+ "actions are made available on `this` and are bound correctly"
+ );
await click(".say-hi");
assert.strictEqual(