如何在 Ember 的组件中使用组件

Posted

技术标签:

【中文标题】如何在 Ember 的组件中使用组件【英文标题】:How to use a component from within a component in Ember 【发布时间】:2016-08-26 00:58:47 【问题描述】:

万事如意,

我正在尝试用另一个组件包装一个组件以提供简化的编辑包装器。

该组件将有条件地显示标签或选择组件,以允许用户选择正确的值。

我想包装 power-select 组件,并将其值传递给子组件,因此页面模板组件引用如下所示:

cm-select 
    title="Country ##" 
    options=countries 
    selected=selectedCountry 
    searchField="name" 
    action="selectCountry"
 

"countries" 是一个国家对象数组,并且 selectedCountry 是这些国家对象之一。

组件模板有以下内容:

<td>title</td>
 <td>
  #if edit
     #power-select
       options=options
       selected=selected
       searchField=searchField
        as |object|
        object.name
     /power-select
  else
      <small>modelElement</small>
  /if
</td>

不幸的是,power-select 组件呈现一个空的选项列表。

我认为将这些参数包装在把手中可能会奏效,但把手中的把手似乎不是有效的语法。

有人有什么想法吗?

谢谢,

安迪

【问题讨论】:

【参考方案1】:

应该可以,我为您创建了一个twiddle,展示了您的用例。您会看到我将您的 cm-select 模板更新为:

title |
<button action 'toggleEdit'>Toggle Edit</button>
<br/>
#if edit
    Search for a Item via searchField
  <br/>
  power-select
    options=options
    selected=selected
    searchField=searchField
    onSelect=(action "itemSelected")
  
else
  search-list 
    options=options 
    searchField=searchField
    onSelect=(action "itemSelected")
  
/if

您在 cm-select 组件中迭代了 power-select 的选项,我将其移到了 power-select 模板中。最好尝试在那里封装一些功能,而不是将所有内容都放在 cm-select 中。我不确定您对 modelElement 有什么想法,所以我只是演示了它的外观,在 cm-select 中使用了两个不同的组件。

【讨论】:

以上是关于如何在 Ember 的组件中使用组件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ember-cli 插件组件中找到 npm 模块

Ember.js - 如何在组件视图中呈现默认插座

如何在 Ember 中使用 jsTree 插件

如何在 ember.js 组件模板中生成多条内容?

如何在 Ember CLI 应用程序中访问 Ember 全局“App”变量?

如何通过变量动态调用 ember 组件?