2013-08-26 40 views
2

如何從另一個控制器訪問ember組件的控制器? 只有知道存在此組件的實例時,是否有像__container__.lookup這樣的後門方式? 當我試着__container__.lookup"component:<myComponentname>"它給了我一個組件的實例沒有在應用程序的任何地方使用。Ember組件查找/調試/測試

TL; DR
如何測試Ember組件對象?

+3

這我下面截至目前骯髒的黑客...是我得到包含容器的div的ID,並從Ember.View.views [「ember_id_」]訪問它的實例 –

+0

所以你基本上想要從另一個控制器訪問控制器?是對的嗎? – mavilein

+0

特定組件實例的控制器不是任何其他常規控制器。 –

回答

2

ember-inspectorThese lines透露如何獲得「查看註冊表,」 DOM元素ID的灰燼2.X映射到它們各自的Ember.Component實例或Ember.View比如在1.x中

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

所以,如果你在你的DOM灰燼成分像

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

,你可以看看它像

var viewRegistry = application.__container__.lookup('-view-registry:main') || View.views; 
var myComponentInstance = viewRegistry.ember1234;