我的目标是解决一个通用组件,即组件不存在。它成功地这样做了:
// 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
的情况下检查某个组件是否存在?
非常感谢。
答案 0 :(得分:0)
this.container.registry.resolve有用吗?
中的代码看起来您也可以使用this.container.registry.has