2014-10-06 4 views
1

나는 뷰어 템플릿, 뷰어 컨트롤러 및 뷰어 템플릿의 모델을 나타내는 항목 목록이있는 Ember 응용 프로그램이 있습니다. 응용 프로그램에는 두 가지 주요 기능이 있습니다. 단일 항목보기 또는 둘 이상의 항목 비교. 단일보기의 경우 매우 간단합니다. 사용자가 다른 항목을보고 싶어 할 때 모델을 변경 한 뷰어 컨트롤러 인스턴스가 하나뿐입니다. 여러보기의 경우 문제가 있습니다. 동일한 뷰어 컨트롤러의 인스턴스가 여러 개 있고 일부 작업의 경우 경로를 통해 뷰어 컨트롤러에 작업을 보내기 위해 인스턴스가 필요합니다. 단일보기의 경우 controllerFor ('이름')와 함께 컨트롤러의 인스턴스를 가져 오지만 여러 인스턴스가있을 때 특정 컨트롤러 인스턴스에 액세스하는 방법을 알지 못합니다.컨트롤러의 인스턴스에 액세스하는 방법

여러보기의 경우 사용자는 활성 항목을 마우스로 선택해야합니다. 내부적으로 모델의 항목에는 사용자가 클릭 한 경우에만 true 인 선택된 속성이 있습니다.

아마도 좋은 생각이 아닌 한 가지 아이디어는 모델의 각 항목에 컨트롤러 인스턴스를 유지하는 것입니다. 이 방법으로 나는 선택된 아이템을 찾을 것이고 그 아이템으로부터 나는 컨트롤러 인스턴스를 가져갈 것이다. 또 다른 아이디어는 선택된 뷰어 컨트롤러의 인스턴스 경로를 유지하는 것입니다.

EmberJS를 사용하여 컨트롤러의 특정 인스턴스에 액세스하는 가장 좋은 방법은 무엇인지 알고 있습니까?

답변

0

부모 컨트롤러가 ArrayController이고 현재 표시기 컨트롤러에 itemController 속성이 설정되어 있어야합니다. http://emberjs.com/api/classes/Ember.ArrayController.html

그런 다음 템플릿에 {{#each}}으로 렌더링하고 필요하면보기를 지정할 수도 있습니다.

+0

이것은 제가 가지고있는 상황과 정확히 같습니다 : UL 목록에 {{each}}가있는 템플릿으로 렌더링되는 어레이 컨트롤러입니다. 그러나 일부 작업의 경우 route에서 itemController의 올바른 인스턴스가 필요하며이를 검색하는 방법을 알지 못합니다. – shareit

+0

'arrayController.findBy ('id', id);'를 사용하여 특정 컨트롤러를 얻을 수 있습니다 @shareit – Jakeii

관련 문제