2

如何从另一个控制器访问 ember 组件的控制器?是否有一种后门方式,比如__container__.lookup只知道有这个组件实例?当我尝试__container__.lookup使用它时,"component:<myComponentname>"它给了我一个组件实例,该实例没有在应用程序的任何地方使用。

TL;DR
如何测试 Ember 组件对象?

4

1 回答 1

2

这些ember-inspector行揭示了如何获取“视图注册表”,即 DOM 元素 id 到Ember.ComponentEmber 2.x 中的相应实例或Ember.View1.x 中的实例的映射。

viewRegistry: computed('application', function() {
  return this.get('application.__container__').lookup('-view-registry:main') || View.views;
}),

因此,如果您的 DOM 中有一个 Ember 组件,例如

<span id="ember1234">Hi I'm controlled by Ember</span>

你可以查一下

var viewRegistry = application.__container__.lookup('-view-registry:main') || View.views;
var myComponentInstance = viewRegistry.ember1234;
于 2016-01-12T03:23:16.607 回答