2014-04-16 4 views
4

이전에 ember 응용 프로그램을 개발할 때 전역 전역 개체로 App을 사용했으며 모든 클래스가이 큰 개체에 저장되었습니다. 이Ember-CLI - 응용 프로그램 클래스에 액세스하는 방법

window.App.MyModel = Em.Object.extend({}); 

추천하고 브라우저 콘솔에서

, 나는 나를 MyModel 클래스에 접근 할 수

App.MyModel.create(); 

그래서 정말 쉬웠다 할 수 있었다.

이제 Ember-CLI로 실험을 시작 했으므로 이런 종류의 도구에 대한 경험은별로 없습니다. 나는 문서화를 따라 갔고 나는 이와 같은 모델 서비스를 만들었다.

var Service = Ember.Object.extend({}); 
export default Service 

하지만 이제 브라우저 콘솔에서 서비스 클래스에 액세스하는 방법은 무엇입니까? 내가 찾은 유일한 방법이었다 :

App.__container__.resolve('model:service') 

하지만 많이 좋아하지 않아. 더 좋은 방법이 있습니까? Btw, 수출은 어떻게 작동하는지 설명해 주시겠습니까? 아니면 내가 그것을 공부할 수있는 소스 (문서, 기사)가 있습니까?

답장을 보내 주셔서 감사합니다.

+0

Ember CLI v0.1.2에서 나는 브라우저 콘솔에서'window.App'를 얻지 못했습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? – GMA

답변

9

응용 프로그램 전체에서 대부분의 장소에서 사용할 수있는 것을 준비하려는 경우 일반적으로 컨테이너에 등록하려고합니다.

컨테이너에 액세스하는 데는 여러 가지 방법이 있으며, 발견 한 것이 이상적이지 않은 것이 맞습니다. 실행중인 농담은 "__container__에 직접 액세스 할 때마다 밑줄을 추가해야합니다."

물건을 컨테이너에 등록하고 컨테이너에 주입하는 방법을 직접 제어하려면 일반적으로 initializer을 사용하고 싶습니다. Using initializers in ember-cli은 매우 쉽게 사용할 수 있으며 자동으로 실행됩니다.

documentation을 확인하면 애플리케이션 컨테이너에 안전하게 액세스 할 수있는 인수로 애플리케이션 컨테이너에 액세스 할 수 있습니다.

컨테이너에 액세스하면 registerinject을 사용하여 특정 위치에서 콘텐츠를 쉽게 사용할 수 있습니다. 이것은 introduced here입니다. 앱의 컨텍스트 (브라우저 콘솔) 외부에서 컨테이너 내부에있는 항목에 액세스하는 데는 App.__container__의 사용이 필요하며 이는 예상되는 사용 패턴입니다.

실행중인 export은 ES6 모듈 시스템 구성이며 Ember에만 국한된 것은 아닙니다. ES6 module transpiler을 가지고 놀면 어떤 일이 벌어지는 지, 그리고 "우리는 오늘 할 수 있습니다"유형의 JavaScript에서 나오는 것을 잘 이해할 수 있습니다.

+1

굉장한 대답. 고마워. –

+0

http://iamstef.net/ember-cli/#initializers는 404를 제공합니다. – Ideogram