Как изменить класс маршрута Ember

Всем привет,
Я хочу изменить класс маршрута Ember (/app/assets/javascripts/discourse/routes/tags-show.js.es6) так же, как мы изменяем классы контроллера и компонента с помощью pluginAPI.
Пример изменения контроллера composer.js.es6 представлен ниже:

<script type="text/discourse-plugin" version="0.8">
  api.modifyClass('controller:composer', {
    actions: {
        newActionHere() { }
   }
});
</script>

Возможно ли изменить класс маршрута Ember таким же образом?

Я считаю, что это возможно — я думаю, это работает через route:route-name. Вы уже пробовали?

route:route-name работает, но когда я пытаюсь переопределить действие createTopic, как показано ниже:

<script type="text/discourse-plugin" version="0.8">
  api.modifyClass('route:tags-show', {
    actions: {
     createTopic() {
      const controller = this.controllerFor("tags.show");

      if (controller.get("list.draft")) {
        this.openTopicDraft(controller.get("list"));
      } else {
        this.controllerFor("composer")
          .open({
            categoryId: controller.get("category.id"),
            action: Composer.CREATE_TOPIC,
            draftKey: controller.get("list.draft_key"),
            draftSequence: controller.get("list.draft_sequence")
          })
          .then(() => {
            // Заполнить поле ввода тегов
            if (controller.get("model.id")) {
              const composerModel = this.controllerFor("composer").get("model");

              composerModel.set(
                "tags",
                _.compact(
                  _.flatten([
                    controller.get("model.id"),
                    controller.get("additionalTags")
                  ])
                )
              );
            }
          });
      }
    }
}
 });
</script>   

Выдает ошибку:
ReferenceError: Composer is not defined

Это происходит потому, что Composer не определен в вашем коде. Если вы посмотрите на маршрут tags-show, то увидите, что Composer определен в начале.

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/routes/tags-show.js.es6#L2

Однако, поскольку вы делаете это в тегах скриптов темы, вы не можете использовать import. Вместо этого вам придется использовать require.

Таким образом, это должно сработать, если вы добавите что-то вроде этого в начало вашего кода:

const Composer = require("discourse/models/composer");

Тем не менее, я настоятельно рекомендую вам потратить немного времени на чтение

и поэкспериментировать с этим новым способом создания тем. Так гораздо проще следовать примерам из ядра.