【问题标题】:Ember js, HTMLbars: use component as param of a componentEmber js,HTMLbars:使用组件作为组件的参数
【发布时间】:2016-09-30 21:57:42
【问题描述】:

我想要这样的事情:

{{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 并希望通过按钮 init 呈现工具提示。

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

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

问题是,我最终需要一个带有按钮和数据余烬动作的标题的 HTML 字符串。我不能使用包装组件的 tpl。如果我扩展工具提示器,它看起来像这样:

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

【问题讨论】:

    标签: ember.js htmlbars


    【解决方案1】:

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

    当您想在 component-one 中渲染该组件时,您需要再次使用组件助手,如下所示:{{component title}}

    这至少是我让它工作的方式。我相当有信心这是“余烬”的方式。

    【讨论】:

    • 即使我离开了参数,我总是只会得到一个“无法读取 null 的属性 'getState'”。实际上,我不太确定标题中的“再次使用组件助手”是什么意思。谢谢帮助
    • 哦...我知道您现在要做什么...通常在html元素上的title属性只能是字符串..您不能将组件传递给title
    • 相反,我会搜索处理自定义工具提示的 ember 插件或 js 插件
    • 你的权利,它必须是一个字符串。到目前为止,我有一个帮助连接一些行 html。有没有办法用 data-ember-action 让组件呈现 html?在我的项目从工具提示器改变的这一点上是没有选择的:(。更新的问题。
    【解决方案2】:

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

    首先传递组件:

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

    然后在wrap-component.hbs 里面调用组件:

    {{component child}}
    

    查看此ember-twiddle。

    【讨论】:

    • 感谢您的旋转。问题是我不能使用包装器 tpl :(。很抱歉错过了这个信息。我更新了问题。你能想到其他方法吗?谢谢
    猜你喜欢
    • 2015-11-30
    • 2015-04-18
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多