Ember js, HTMLbars: 使用组件作为组件的参数

Ember js, HTMLbars: use component as param of a component

我想做这样的事情:

{{component-one title=(component-two paramX paramY)}}

组件助手在这里不起作用,我试过了

{{component-one title=(component 'component-two' params)}}

我也尝试让助手渲染我的组件,但失败了。似乎我找到的所有答案都像这个一样过时了 how can I invoke an ember component dynamically via a variable?

更具体地针对我的用例。我使用 tooltipster 并希望使用按钮初始化呈现工具提示。

{{#tool-tipster title=(my-comp params) ... }}

------更新--------

问题是,我最终需要一个 HTML 标题字符串,带有一个按钮和一个 data-ember-action。我不能使用包装器组件的 tpl。如果我扩展 tool-tipster 它看起来像这样:

export default TooltipsterComponent.extend({
  title: 'title as html string'
  //other tooltipster options go here with "optionname: optionvalue"
});

所以我已经想到了这样的事情:

title: function() {
  //load component and return rendered component by hand
}}

但这让我回到了我无法手动渲染任何组件的问题。

感谢每一个输入!

干杯 π

-----更新------

gitbub 上的 altrim 为我的问题提供了确切的解决方案:https://github.com/altrim/tooltipster-content-component

使用 title=(component 'component-two' params) 是正确的想法,但我 非常确定 除了解析名称之外,你不能在组件助手中使用位置参数..所以你需要这样做:title=(component 'component-two' params=params)

当您想在 component-one 中渲染该组件时,您将需要像这样再次使用组件助手:{{component title}}

这至少是我让它工作的方式。我相当有信心这是 "ember" 的方式。

你可以这样做,但是你需要使用组件助手两次:

第一个通过组件:

{{wrap-component child=(component 'pass-component' name="blah")}}

接下来在 wrap-component.hbs 中调用组件:

{{component child}}

检查此 ember-twiddle