2014-04-04 5 views
0

좋아, 무작위 컨트롤러 (내 템플릿의 기본 컨트롤러 아님)의 계산 된 속성에서이 속성을 임의 템플릿의 구성 요소에 전달하려고합니다. irc에 대한 약간의 도움으로 나는 "http://emberjs.com/guides/controllers/dependencies-between-controllers/"라고 불렀고, 나의 질문이 구성 요소 질문보다 컨트롤러 의존성 질문에 더 많이 도움이된다는 것을 알았지 만 여전히 문제가 있습니다. 컨트롤러를 구성 요소에 전달하는 올바른 방법

needs: 'foo_bar' 

그리고

이 같은 ㅋ 템플릿에 내 구성 요소를 호출하고있어 여기서

그래서 내 ㅋ 템플릿의 기본 컨트롤러 (BlahController)에 나는이 같은 FooBarController에 대한 액세스를 얻을 수있는 '필요'후크를 사용 , 나는 그런 것처럼 FooBarController의 재산 얻을 :

{{my-widget someProperty=controllers.foo_bar.someProperty}} 

그리고 내 구성 요소는 바로 그런 같은 특성 표시

{{someProperty}} 

내가 액세스하려고하는 속성 (someProperty)은 고유 한 의존성을 가진 계산 된 속성입니다. 계산 된 속성의 종속 속성을 사용할 수없는 것 같은 오류가 발생합니까 ???

답변

0

엠버 구성 요소는 재사용 가능한 요소를 만들기 위해 완전히 격리 된 뷰가 필요할 때만 사용해야합니다. 따라서 구성 요소를 템플릿으로 필요로하는 모든 내용은 구성 요소를 매개 변수로 호출 할 때 전달되어야합니다. 구성 요소는 컨트롤러에 바인딩되어서는 안됩니다. 대신, 이벤트를 전달할 필요가있을 때 호출 된 템플릿을 제어하는 ​​컨트롤러에 'sendAction'API를 사용해야합니다. 정말로 필요한 것은보기입니다.

+0

안녕하세요. Hrishi, 방금 원래 질문을 수정했습니다. 나는 가까워 질 수 있었지만 다른 벽을 만났다. 그러나 당신의 도움에 감사드립니다. 나는 일부 컨트롤러에서 계산 된 속성을 뱉어내는 구성 요소를 가질 수 없다는 것이 나에게 이상하다고 생각합니다. 그것은 구성 요소로하고 싶은 합리적인 것 같습니다. 또한 실제로 구성 요소는 템플릿에서 더 간결하게 만들었 기 때문에 뷰를 통해 사용하는 것이 더 유리하다고 생각했지만 다시보아야 할 뷰로 돌아 왔습니다. –

+0

방금 ​​"controllers.whatever"문자열이 내 서식 파일에 반환되었습니다. 인용 부호가 없으면 컨트롤러에서 계산 된 속성에 확실히 액세스하고 있습니다. Uncaught TypeError :이 경우 undefined라는 속성 'height'을 읽을 수 없습니다. 높이는 나중에 계산 된 속성의 속성입니다. 감히 나는 이것이 버그 같다고 말한다. –

+0

죄송합니다. 내 실수는 다음과 같습니다 : http://emberjs.com/guides/components/passing-properties-to-a-component/, {{my-widget someProperty = controller와 같은 속성을 전달해야합니다. controllers.foo_bar.someProperty}} – Hrishi

관련 문제