EmberJS:如何检查组件是否存在(在另一个组件内)?

时间:2015-04-06 11:14:17

标签: ember.js components

我的目标是解决一个通用组件,即组件不存在。它成功地这样做了:

  // app/components/dynamic-widget.js
  ...
  widgetName: function() {
    var name = this.get('config.name');
    if (!this.container.resolve('component:'+name)) {
       name = 'generic-widget';
    }
    return name;
  }.property('config.name')
  ...

然后在app/templates/components/dynamic-widget.hbs

    {{component widgetName}}

然后,我可以像这样使用dynamic-component

    {{dynamic-widget 'foo-widget'}}

如果未实施foo-widget,则会回退到generic-widget

但是自从EmberJS 1.11起,不推荐使用从组件容器中解析组件:

DEPRECATION: resolve should be called on the registry instead of the container

所以我的问题是,如何在不使用this.container.resolve的情况下检查某个组件是否存在?

非常感谢。

1 个答案:

答案 0 :(得分:0)

this.container.registry.resolve有用吗?

查看git https://github.com/emberjs/ember.js/blob/5fd2d035b30aa9ebfe73de824b3b283ec8e589cc/packages/container/lib/registry.js

中的代码

看起来您也可以使用this.container.registry.has