2013-08-26 4 views
2

다른 컨트롤러에서 ember 구성 요소의 컨트롤러에 액세스하려면 어떻게해야합니까? __container__.lookup과 같은 백도어 방식으로이 구성 요소 인스턴스가 있음을 알고 있습니까? __container__.lookup"component:<myComponentname>"으로 시도했을 때 응용 프로그램의 어느 곳에서도 사용되지 않는 구성 요소의 인스턴스를 제공했습니다.Ember 구성 요소 조회/디버그/테스트

TL
Ember 구성 요소 개체를 테스트하는 방법은 무엇입니까? ember-inspector

+3

더러운 해킹처럼 찾아 볼 수 있습니다 ... Ember.View. [ "ember_id_"] –

+0

에서 컨테이너를 포함하고 해당 인스턴스에 액세스하는 div의 ID를 얻고 있습니다. 기본적으로 다른 컨트롤러에서 컨트롤러에 액세스하고 싶습니까? 그게 맞습니까? – mavilein

+0

특정 구성 요소 인스턴스의 컨트롤러가 다른 일반 컨트롤러가 아닙니다. –

답변

2

These lines은 1.x 버전에서 "보기 레지스트리,"엠버 2.x에서의 각각의 Ember.Component 인스턴스에 DOM 요소 ID의 매핑, 또는 Ember.View 인스턴스를 얻는 방법 공개

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

그래서 당신은

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

처럼 DOM의 엠버 구성 요소가 있다면 당신은 내가 지금으로 다음과 같은거야

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