2012-09-24 5 views
0

탐색 메뉴가 필요한 UI 구성 요소가 여러 개 있습니다. 다른 viewModel에서 사용할 수있는 MenuItem viewModel을 만들려고합니다.중첩 된보기 모델 내의 녹아웃 이벤트 핸들러

아이디어는 Knockout Webmail Example과 유사합니다.

예를 들어, "Window"viewModel은 "MenuItems"의 배열을 가질 수 있습니다. MenuItem에는 모든 동작 기능이 포함됩니다 (& 활성 상태로 이동).

활성 상태가 내 표준에서는 상당히 표준적인 반면, 각 MenuItem은 클릭 핸들러를 개별적으로 트리거해야합니다.

상위 viewModels에서 각 menuItem의 click 이벤트를 처리 할 수 ​​있도록 MenuItem viewModel 내에 이벤트 콜백을 첨부 할 수 있다면 이상적입니다.

parent viewModel에서 클릭 핸들러를 정의 할 수 있지만 입니다.하지만 각 MenuItem의 클릭 핸들러는 foreach 템플릿 바인딩에서 참조 할 수 있습니까?

아직 실험 중이며 jsFiddle이라는 예를 만들었습니다. 나는 데이터 바인딩이 너무 장황하기 때문에 마크 업에 너무 만족하지 않는다.

미리 감사드립니다.

답변

3

ko.contextFor(this)을 사용해보세요.

Ko unobtrusive event handlers

+0

예, 나는 눈에 거슬리지 이벤트 핸들러의 알고보고를하게한다. 하지만 jQuery를 종속성으로 만들지는 않겠습니까? KO viewModel 내에서 이벤트를 처리 할 방법이 없습니까? –

+0

사용자 정의 바인딩을 작성할 수 있습니다. 이 [Article] (http://www.knockmeout.net/2011/04/event-delegation-in-knockoutjs.html)에서는 어떻게 할 지에 대한 아이디어를 얻을 수 있습니다. 그들은 Jquery 템플릿을 사용하여 사용자가 클릭 한 실제 객체에 액세스 할 수 있지만 ko.contextFor를 사용하여 액세스 할 수 있습니다. – estebane97

+0

분명히 내가 한 것보다 마지막으로 더 많이 이해했습니다. Article :-)에 대한 링크를 가져 주셔서 감사합니다. –