2011-05-15 1 views
0

제품 목록 (색인보기)이 있고 제품을 클릭하면 라이트 박스가 열립니다 (보기 표시). 이제 사용자가 라이트 박스를 닫을 때, 나는 그의 페이지로 돌아가고 싶다. 문제는 Lightbox가 여러 곳에서 열릴 수 있다는 것입니다. 가장 좋은 예제를 통해 보여 것 :Backbone.js - 컨트롤러 기능의 참조 리퍼러

제품 "푸"는 3 개의 다른 페이지에 나타납니다

/     (the home page) 
/tag/bar   (all products tagged with "bar") 
/tag/baz/page-3 (all products tagged with "baz", paginated) 

지금 내가 어디 라이트 박스 닫을 때 사용자를 리디렉션하는 결정해야합니다. 이 단계에서 라이트 박스가 열리는 페이지에 대한 정보는 없습니다.

그래서 라이트 박스를 열 때 (표시보기 렌더링) "returnTo"경로를 저장하는 것으로 나타났습니다. 해시 변경에 의해 트리거되고 쇼보기를 렌더링하는 컨트롤러 함수에서 나는 어떤 "참조 자"정보에도 접근 할 수 없습니다.

해시 변경을 트리거 한 페이지를 볼 수있는 방법이 있습니까? 또는이 문제를 해결할 더 좋은 방법이 있습니까?

모든 제안 사항에 감사드립니다. :)

편집 :

나는 쿠키를 설정하여 문제를 해결했다. 쿠키는 인덱스 사이트 (위에서 언급 한 세 가지 중 하나 일 수 있음)를 방문 할 때마다 설정됩니다. 그런 다음 라이트 박스가 닫히면 사용자는 마지막으로 연 인덱스 사이트 인 쿠키 값으로 리디렉션됩니다. 백 보니 (backbone.js)에 내장 된 방법이 있다면 어떻게해서든지 기억을 "기억"할 수 있다면 좋을 것입니다. 줄리앙 (Julien)은 이러한 기능을 추가하는 것이 가능할 수도 있다는 의견에 언급했습니다.

+0

기다리는 동안 라이트 박스를 사용하고 있으며 사용자가 페이지를 닫으면 페이지가 다시로드됩니까? 왜? 그는 이미 페이지에 있지 않습니까? 라이트 박스는 자바 스크립트에서 생성 된 DIV이며 콘텐츠의 나머지 부분 위에 z 인덱싱됩니까? 다 끝났을 때 DIV를 추방 할 수 없으며 사용자가 사업을 다시 시작하도록 할 수 있습니까? –

+0

그게 내가 추측하고있는 것이지만 해시 위치로 접근한다. – Julien

+0

아니요, 라이트 뷰가 닫힐 때 인덱스 뷰를 다시 렌더링해야합니다. 사용자가 뷰 뷰에 직접 왔을 수 있습니다. 즉, 인덱스 뷰가 아직 제대로 렌더링되지 않았 음을 의미합니다. –

답변

1

JS 내에서 브라우저 뒤로 버튼을 트리거 할 수 있습니다. 모든 것을 올바르게 설정했다고 가정하면 브라우저는 이전에 설정된 해시로 되돌아 가야합니다.

+0

예, 저는 그것에 대해 생각하고있었습니다. 문제는 사용자가 완전히 다른 URL에서 왔을 가능성이 있으며 (가능성은 있지만 가능하지만) 쇼보기의 URL을 직접 입력했기 때문입니다. 또는 이메일의 링크를 클릭했을 때 "뒤로"가 없습니다. –

+0

Backbone.History를 변경하여 기록을 추적하고 그 상태로 돌아갑니다. – Julien

+0

예, 좋습니다. 어떻게해야합니까? Backbone.history에서 inbuilt를 찾을 수 없습니다 ... –