나는 상속 된 Ember 응용 프로그램을 리팩토링하고 있는데, 비 mvc 무질서가 꽤 있습니다. 나는 가능한 한 모듈화 된 것을 유지하려고 노력하고 있으며 코드 중복을 방지하기 위해 다양한 UI 구성 요소를 여러 화면에서 재사용하기를 원합니다.Ember.js - 중첩 된/반복 된보기로 콘센트를 대상으로 지정하는 방법과 이러한 UI 레이아웃의 모범 사례는 무엇입니까?
아울렛이 최선의 방법이라고 생각됩니다.
지금 당장 UI가 여러 가지 요소를 표시하며 각 요소는 템플릿으로 구성된보기를 사용하여 렌더링됩니다.
{{#each item in controller}}
{{view App.ItemThumbView}}
{{/each}}
이보기의 오른쪽 사이드 바는 선택에 따라 변경되는 콘센트입니다. 항목을 선택하면 템플릿 처리 된 하위보기에서 편집 작업 목록을 표시하고 싶습니다. 선택하면 중첩 된 콘센트를 통해 적절한 편집 UI가 나타납니다. 말이 - -
본질적+---------------------------------------------------+
| Parent Pane
|
| +------------------------------+ +----------+
| | Device Section | | Sidebar |
| | | | [Outlet] |
| | +--------+ +---------+ | | |
| | | Dev 1 | | Dev 2 | | | |
| | |[outlet]| | [outlet]| | +----------+
| | +--------+ +---------+ |
| +------------------------------+
+--------------------------------------------------+
중첩 뷰는 모두 동일한 제어기를 공유하지만 해당 콘센트 선택된보기를 연결할 수 있어야한다. 콘센트 연결에 대한 나의 초기 시도는 결코 표시되지 않습니다. 코드가 전혀 실패하지 않으므로 컨트롤러가 숨겨진 콘센트를 업데이트합니다.
Ember에서 중첩 된보기의 올바른 콘센트를 어떻게 타겟팅합니까? (기껏해야, 사이드 바 콘센트에 충돌 할 수는 있지만 중첩 된 장치 템플릿 내의 콘센트는 안 맞을 것 같습니다.) 그리고 이것은 처음부터 엠버에서 컨텍스트 메뉴를 구현하기위한 합리적인 구조입니까?
* 나의 현재 설정에 설명 , 각 장치 아이템은 동일한 템플릿을 이용하여 렌더링된다. 이 옵션을 선택하면 사이드 바 콘센트가 일부 장치의 메타 정보로 업데이트되고 선택한 장치보기는 해당 콘센트를 편집 메뉴에 연결합니다. 한 번에 하나의 장치 항목에만 '편집'콘센트가 연결됩니다.
여기 콘센트를 사용하는 것이 맞습니까? 아니면 필요에 따라 편집 메뉴를 표시하기 위해 조건부 논리를 템플릿에 놓아야합니까?
업데이트 질문의 모범 사례 부분을 재 작성 :
아울렛 디커플링 구성 요소 및 미래 교정 잠재적보기 스팅에 좋은 것 같다. 하지만 지금은 중첩 된보기를위한 올바른 콘센트에 액세스하는 것이 약간 번거로운 것 같습니다. 또한, 템플릿 내에서 조건 적으로 중첩 될 구성 요소를 항상 알고있는 경우에는보기를 하드 코딩하는 것이 가장 쉬운 방법입니다. 예 :
// within template used for individual result-list items
{{#if condition }}
{{view reusableSubView}}
{{/if}
여기서 일을하는 데 선호되는 방법은 무엇입니까? 항상 연결되어 있지 않은 콘센트를 만드는 데 오버 헤드가 있습니까?