【问题标题】:Dynamically determine existence of Ember component?动态确定 Ember 组件的存在?
【发布时间】:2016-01-14 17:11:49
【问题描述】:

我浏览了 ember-htmlbars 包,发现了这个用于确定组件是否可用的工具? https://github.com/emberjs/ember.js/blob/master/packages/ember-htmlbars/lib/utils/is-component.js

有什么方法可以从我的应用程序中使用它吗?我正在构建一个仪表板类型的界面,并且一些仪表板小部件具有可选操作。本质上,我想做这样的事情:

<div class="panel panel-default">
  <div class="panel-body">
    {{component model.displayComponent model=model}}
  </div>
  {{#if isComponent(model.actionComponent) }} <!-- this would be a property -->
    <div class="panel-footer">
      {{component model.actionComponent model=model}}
    </div>
  {{/if}}
</div>

我的回退是为我的每个没有的小部件放置一个空白操作组件,但能够先检查它们是否存在会更简洁。

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    你可以创建助手is-component

    export default Ember.Helper.extend({
      compute([name]) {
        return this.container.registry.has('component:' + name);
      }
    })
    

    并像{{#if (is-component model.actionComponent) }}一样使用它

    【讨论】:

    • 完美。谢谢你。我会研究 container.registry 并弄清楚你在这里做什么。
    • 容器是缓存对象的单例实例的地方,而注册表是存储所有类/工厂的地方:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多