2017-11-11 3 views
1

구성 요소가 있습니다 (예 : MyComponent). 이 구성 요소에 서비스를 주입했습니다. MyService.주입되는 동안 엠버 서비스에 인수를 어떻게 전달할 수 있습니까?

다른 구성 요소 (예 : ParentComponent)에서 'MyComponent'를 사용하면 템플릿을 통해 'MyComponent'에 전달됩니다. 'MyComponent'에 삽입 된 'MyService'에는이 템플릿 인수가 필요합니다. 서비스를 주입하는 동안 어떻게 서비스에 전달할 수 있습니까?

지금은 'MyComponent'의 init() 함수에서 호출 될 특별한 함수를 서비스 안에 작성했습니다. 그게 올바른 길인지 나는 모른다.

부모 구성 요소/template.hbs :

// some html 
{{my-component myOptions=parentOptions}} 
// some html 

내 구성 요소/component.js :

export default Component.extend({ 
// some js 
myService: inject.service(), 
init() { 
    this._super(...arguments); 
    get(this, 'myService').passDownMyArguments(get(this, 'myOptions')); 
}, 
// some js again 
}) 

내가 알고 싶어 여기

거친 코드 예제입니다 서비스 내에서 다른 함수를 호출하기보다는 주입 될 때 서비스에 'myOptions'를 전달할 수 있습니다.

답변

0

아니요, 서비스를 삽입 할 때 서비스에 값을 전달할 수 없습니다. 당신이하고있는 일은 당신의 셋업을 고려하여 최선의 방법입니다. 하지만 질문 : 귀하의 서비스가 대신 포함 된 구성 요소에 있어야합니까?

1

아니겠습니까?

... 
myService: inject.service(), 
didReceiveAttrs() { 
    this.get('myService').myFunction(this.get('myOptions')); 
} 
: 당신이 구성 요소의 라이프 사이클 https://guides.emberjs.com/v2.6.0/components/the-component-lifecycle/에서 볼 수있는 바와 같이 초기화 만, 그래서이 같은 다음 라이프 사이클 후크에서 매개 변수를 전달할 수 있습니다 후 , 구성 요소는 템플릿에서 매개 변수를 받게됩니다
관련 문제