diff --git a/app/assets/javascripts/discourse/widgets/widget.js.es6 b/app/assets/javascripts/discourse/widgets/widget.js.es6 index cb75df16ae..10f7ef50c2 100644 --- a/app/assets/javascripts/discourse/widgets/widget.js.es6 +++ b/app/assets/javascripts/discourse/widgets/widget.js.es6 @@ -12,6 +12,7 @@ import { h } from "virtual-dom"; import DecoratorHelper from "discourse/widgets/decorator-helper"; import { Promise } from "rsvp"; import ENV from "discourse-common/config/environment"; +import { get } from "@ember/object"; const _registry = {}; @@ -150,6 +151,10 @@ export default class Widget { destroy() {} + get(propertyPath) { + return get(this, propertyPath); + } + render(prev) { const { dirtyKeys } = this; diff --git a/test/javascripts/widgets/widget-test.js.es6 b/test/javascripts/widgets/widget-test.js.es6 index 4666285c27..0ab65b0dc5 100644 --- a/test/javascripts/widgets/widget-test.js.es6 +++ b/test/javascripts/widgets/widget-test.js.es6 @@ -380,3 +380,23 @@ widgetTest("override settings", { assert.equal(find(".settings").text(), "age is 37"); } }); + +widgetTest("get accessor", { + template: `{{mount-widget widget="get-accessor-test"}}`, + + beforeEach() { + createWidget("get-accessor-test", { + tagName: "div.test", + template: hbs`Hello {{transformed.name}}`, + transform() { + return { + name: this.get("currentUser.username") + }; + } + }); + }, + + test(assert) { + assert.equal(find("div.test").text(), "Hello eviltrout"); + } +});