Как добавить действия компонента в плагин-аутлет?

Я пытаюсь сослаться на существующий компонент в плагин-аутлете, но постоянно получаю ошибки. Основная проблема, похоже, связана с действиями, ассоциированными с компонентом. Есть ли правильный способ ссылаться на действия другого компонента в плагин-аутлете?

Мне казалось, что в плагин-аутлете достаточно просто сослаться на компонент (например, {{component-name action=(action "doSomething")...}}), чтобы подтянуть весь соответствующий код действий этого компонента. Но, похоже, это не так — я получаю различные ошибки о том, что некоторые вещи не определены, определения некорректны и другие сообщения, указывающие на то, что JavaScript действий не подгружается в плагин-аутлет должным образом.


Например:

Если в шаблоне есть следующая ссылка на компонент composer-action-title, как здесь:
composer.hbs:

 {{composer-action-title
       model=model
        openComposer=(action "openComposer")
        closeComposer=(action "closeComposer")
        canWhisper=canWhisper
        tabindex=8
  }}

и я хочу добавить плагин-аутлет, в котором будет тот же самый код, например:

connectors/cool-outlet/cool-outlet.hbs:

 {{composer-action-title
       model=model
        openComposer=(action "openComposer")
        closeComposer=(action "closeComposer")
        canWhisper=canWhisper
        tabindex=8
  }}

Что мне нужно сделать, чтобы мой плагин-аутлет cool-outlet мог успешно ссылаться на компонент composer-action-title, включая действия “openComposer” и “closeComposer”?

Думаю, я уловил основную суть, хотя буду рад услышать любые предложения от других.

Чтобы передать действия и другие аргументы в плагин-оутлет, их можно добавить к ссылке на плагин-оутлет так же, как это делается со ссылкой на компонент.

Однако будьте внимательны: передавайте правильные аргументы, то есть правильные ссылки на переменные.

Возьмём мой пример. Вот ссылка на компонент, которая появляется в шаблоне composer.hbs:

{{composer-action-title
       model=model
       openComposer=(action "openComposer")
       closeComposer=(action "closeComposer")
       canWhisper=canWhisper
       tabindex=8
  }}

Если вы хотите заменить эту ссылку на ссылку на плагин-оутлет (очевидно, будьте осторожны при редактировании файла шаблона, учитывая возросшую сложность поддержки изменений при обновлении Discourse), и вы хотите, чтобы сам плагин-оутлет ссылался на компонент composer-action-title, вы можете добавить это в composer.hbs:

{{plugin-outlet name="cool-outlet" args=(hash 
       model=model
       openComposer=(action "openComposer")
       closeComposer=(action "closeComposer")
       canWhisper=canWhisper
       tabindex=8
    )
}}

А затем в файле connectors/cool-outlet/cool-outlet.hbs следующее должно сработать для ссылки на компонент composer-action-title:

{{composer-action-title
       model=model
       openComposer=openComposer
       closeComposer=closeComposer
       canWhisper=canWhisper
       tabindex=8
  }}

Обратите внимание на переменные здесь — это те же переменные, которые заданы в файле composer.hbs.