关于此问题,我有一个快速提问。
我注意到 TLT 中有一个有趣的地方:
这里没有传递模型。
但你们却能做到这一点:
我只能假设这是一种传递模型属性的稳定策略,因为它在这里被采用了——有什么需要注意的吗?
我发现这些可用的插件出口不太有用的原因之一是,它们通常不会显式传递相关的模型。
这个模式有任何文档记录吗?我在 Ember 指南中没有看到……
关于此问题,我有一个快速提问。
我注意到 TLT 中有一个有趣的地方:
这里没有传递模型。
但你们却能做到这一点:
我只能假设这是一种传递模型属性的稳定策略,因为它在这里被采用了——有什么需要注意的吗?
我发现这些可用的插件出口不太有用的原因之一是,它们通常不会显式传递相关的模型。
这个模式有任何文档记录吗?我在 Ember 指南中没有看到……
“raw”系统是特定于 discourse 的,因此您在 Ember 指南中找不到任何相关信息。
看起来它在核心代码中是相当刻意的,所以我认为使用它是安全的:
事实上,看起来 raw outlets 无法传递常规 plugin_outlets 中的“args”之类的任何内容。所以 context 是唯一的方法。
如果您觉得常规插件出口缺少任何有用的数据,请随时提交核心 PR。向出口添加新参数相对安全,向后兼容,并且对性能影响很小,因此我们不太可能拒绝。
我也一直在努力将参数传递给插件插槽。我的目标是在页面上放置一个插件插槽,并让该插槽能够访问该页面上其他组件引用的所有信息。
我在我正在编码的一个主题组件中尝试了这一点:
{{~raw-plugin-outlet name="cool-outlet" args=(hash model=model)}}
但收到错误:“编译错误:raw-plugin-outlet 不是一个辅助函数”
我还需要做些什么才能让它生效吗?
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 组件?
在 composer.hbs 中使用类似以下的引用:
{{plugin-outlet name="cool-outlet" args=(hash model=model)}}
似乎不起作用。