좀비 레퍼런스 케이스처럼 보입니다.이벤트는 좀비 인스턴스에 묶여 있습니다.
우선이 코드는 내가 사용하고있는 코드입니다.
- 관리자 액세스 목록 : 당신이 gist
컨트롤러 내 사용자의 세부 정보 관리자 레이아웃을 찾을 수 있습니다 여기에
는 대신,
here을 찾을 수 있습니다작업의 흐름은 다음과 같다 컨트롤러의 "manageUsers"를 호출하는 경로에 도달 할 때의 사용자 수를 나타냅니다.
- 사용자 행에 대한 관리자 클릭 및 "users : selected"이벤트가 트리거되고 수신기는 작업 할 사용자 인스턴스를 수신합니다.
- DetailsLayout은 응용 프로그램의 기본 레이아웃에서 인스턴스화되고 렌더링됩니다. "콘텐츠"영역에 특히
- 사용자 세부 정보 폼을 처리하는 뷰도 인스턴스화되어 내부에 렌더링됩니다. DetailsLayout의 "dettagli"영역.
- 이 시점에서 관리자는이 사용자의 메모 관리에 관심이 있습니다. 그래서 그는 "notes"탭에있는 을 클릭하고 DetailsLayout "note"영역에서 음표 목록을 렌더링합니다.
- 관리자가 작업하려는 메모를 클릭하면 메모 인스턴스를 적절한 이벤트 처리기 (DetailsLayout.showNote)로 전달하는 이벤트 "메모 : 선택됨"이 발생합니다. "사용자 : 인덱스"관리자가 차례로 이벤트를 발생, DetailsLayout.showUsers를 발생 링크를 클릭하면이 시점에서
도 앞서 언급 한 컨트롤러에 의해 듣고, 그는 목록의 포인트 1로 돌아 오기 위.
포인트 5까지 전체 프로세스를 반복하지만, 관리자가 메모를 선택하자마자 디버거에서 DetailsLayout 영역 "메모"가 정의되지 않음에 대한 오류가 표시됩니다.
코드를 단계별로 실행하면 두 번째 실행시 실행 된 이벤트가 은 처음 패스에서 사용 된 인스턴스에 여전히 바인딩 된 점 6을 제외하고 DetailsLayout의 적절한 인스턴스에 올바르게 바인딩된다는 것을 알 수 있습니다.
위 코드는 사용자의 세부 정보가 표시 될 때마다 DetailsLayout의 새 인스턴스가 만들어지는 것을 보여줍니다. 아직 좀비가없는 것을 보장하기에 충분하지 않아야합니까? backbone.marionette 문서에서 올바르게 리콜하면 layout.region.show()가 실행될 때마다 이전 뷰 (이벤트와 나머지 모든 것의 바인드 해제)가 닫히고 새로 passwed 뷰가 첨부됩니다.
내가 잘못하고있는 것은 무엇입니까?
미리 도움을 주셔서 감사합니다. 감사합니다.
P.S.
Backbone.marionette 버전은 0.8.4
Backbonejs 버전은 0.9입니다.당신은 직접 Hub.vent
에 결합하고
constructor: (@user) ->
console.addHistory("DetailsLayout","INIT")
super()
Hub.vent.on("notes:selected",(note) => @showNote(note))
Hub.vent.on("notes:show", => @showNotes())
Hub.vent.on("notes:save", (note) => @saveNote(note))
Hub.vent.on("notes:delete", (note) => @deleteNote(note))
Hub.vent.on("notes:new", => @showNote(new Note()))
하지만이 사건에서 결코 명시 적으로 바인딩 해제 다음 UserDetailsList 2
당신은 질문 코드 인라인을 게시 할 수 ? –