Интересная стратегия передачи свойств через необработанные выходы плагина шаблона

Вопрос по этому поводу.

Я заметил кое-что интересное в TLT:

Здесь модель не передаётся.

Тем не менее вам удаётся сделать следующее:

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

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

Описан ли этот паттерн где-либо? В руководствах по Ember я его не встречал…

Система «raw» — это особенность, специфичная для определённого контекста обсуждения, поэтому в руководствах по Ember вы ничего о ней не найдёте.

Похоже, что в исходном коде это сделано намеренно, поэтому я считаю, что использовать её безопасно:

Более того, похоже, что у «raw»-аутлетов нет возможности передавать что-либо вроде ‘args’, как в обычных plugin-outlets. Поэтому context — это единственный вариант.

Будьте свободны создавать PR для ядра, если считаете, что в обычных plugin outlets не хватает каких-либо полезных данных. Добавление новых аргументов в аутлеты относительно безопасно, обратно совместимо и оказывает незначительное влияние на производительность, поэтому маловероятно, что мы откажемся от такого изменения.

У меня тоже возникали трудности с передачей аргументов в выходы плагинов. Моя цель — разместить выход плагина на странице и обеспечить доступ этого выхода ко всей информации, к которой обращаются другие компоненты на этой странице.

Я попробовал следующее в компоненте темы, который я разрабатываю:

{{~raw-plugin-outlet name="cool-outlet" args=(hash model=model)}}

Но получил ошибку: Compile Error: raw-plugin-outlet is not a helper

Что еще нужно сделать, чтобы это заработало?

raw-plugin-outlet можно использовать только в шаблонах ‘raw’ (те, что заканчиваются на .hbr). Для обычных шаблонов Ember следует использовать {{plugin-outlet ...}}

РЕДАКТИРОВАНО: Я понял, что нижеизложенное, вероятно, лучше вынести в отдельную тему. Также я осознал, что моя главная проблема заключается в импорте действий компонента в плагин-аутлет. Я задал вопрос об этом здесь:


Существует ли более простой/стандартный способ успешно передавать аргументы в плагин-аутлет?

Например:

Если в шаблоне есть следующая ссылка на компонент 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?

Использование ссылки вида:
{{plugin-outlet name="cool-outlet" args=(hash model=model)}}
в файле composer.hbs, похоже, не работает.