Backbone.js를 사용하면 라우터를 원래의 페이지로 이동할 수 있습니까? 팝업이 나타나면 내 URL을 변경하는 경우에이를 사용하고 싶습니다. 팝업을 숨기면 다시 변경해야합니다. 뒤로 가기를 원하지 않습니다. 배경 페이지를 팝업을 나타 내기 전에 왼쪽과 정확히 같은 위치에 유지하고 싶습니다.Backbone.js를 사용하여 url을 이전 버전으로 자동 변경합니다.
답변
당신은 Backbone.Router
을 확장하고 탐색 중 모든 경로를 저장하여이 문제를 해결할 수 있습니다. 당신이 당신의 모달을 기각해야 할 때
class MyRouter extends Backbone.Router
constructor: (options) ->
@on "all", @storeRoute
@history = []
super options
storeRoute: ->
@history.push Backbone.history.fragment
previous: ->
if @history.length > 1
@navigate @history[@history.length-2], true
그런 다음, 단순히 다시 마지막으로 "해시"로 리디렉션됩니다
MyRouter.previous()
메서드를 호출합니다.
팝업 또는 오버레이의 onCloseEvent에서 경로를 트리거 할 수 있습니다. :
router.navigate('/lasturl/');
이렇게하면 URL이 설정됩니다. 두 번째 매개 변수로 true를 전달하면 경로 작업도 실행됩니다. 그렇지 않으면 페이지가 변경되지 않습니다.
물론 마지막 질문은 내가 어떻게 알 수 있습니까? 백본이 유용한 방법을 제공합니까, 아니면 window.history에서 가져와야합니까? – user802232
나는 mateusmaso의 답변이 대부분 맞다고 생각하지만, 당신이 찾고있는 올바른 URL을 항상 얻을 수 있도록 약간의 수정이 필요하다고 생각합니다.
먼저 당신은 beforeRoute 방법 화재가 할 수있는 경로 메소드를 오버라이드 (override) 할 필요가 : 그럼
route: (route, name, callback) =>
Backbone.Router.prototype.route.call(this, route, name, =>
@trigger('beforeRoute')
callback.apply(this, arguments)
)
당신은 이벤트를 바인딩하고 역사 인스턴스 변수 초기화 :
initialize: (options) ->
@history = []
@on "beforeRoute", @storeRoute
다음 생성 헬퍼 메소드를 조각 저장 및 검색 :
storeRoute: =>
@history.push Backbone.history.fragment
previousFragment: =>
@history[@history.length-2]
마지막으로, 다시로드하지 않고 URL을 변경하고 결과 조각을 저장하는 데 사용할 수있는 최종 도우미 메서드가 필요합니다. 팝업을 닫을 때이 옵션을 사용해야합니다. 그렇지 않으면 사용자가 다른 곳을 탐색하지 않고 팝업을 다시 가져 오면 예상되는 조각이 사용자의 기록에 남지 않습니다. 이는 "trigger : true"없이 navigate를 호출하면 이벤트 핸들러가 조각을 저장하도록 트리거하지 않기 때문입니다.
changeAndStoreFragment: (fragment) =>
@navigate(fragment)
@storeRoute()
이 답변은 질문에 답할 수 없지만 많은 문제가 있습니다. 후행 슬래시 때문에 이전 경로 또는 맞춤 경로로 자동으로 탐색 할 수 없습니다. 경로 기능을 실행하지 않으려면 {trigger:false}
을 사용하거나 false
이 기본 동작이므로 트리거를 전혀 사용하지 말고 경로가 '#/something'(슬래시에주의) 대신 #something
으로 시작하는지 확인하십시오. 라우터 부분 인 Backbone.js 내의 regEx를 변경하십시오.
- 1. SVN - 트렁크를 이전 버전으로 변경합니다.
- 2. 이전 XCode 버전으로 되돌리려면?
- 3. cd 옵션을 이전 디렉토리로 변경합니다.
- 4. JBossWS가 wsdl url을 변경합니다.
- 5. Django가 성공 URL을 변경합니다.
- 6. Umbraco 3.0에서 최신 버전으로 이전
- 7. 이전 프로젝트를 최신 버전으로 변경
- 8. tfs의 이전 버전으로 돌아 가기
- 9. capistrano 이전 버전으로 롤백 하시겠습니까?
- 10. Wordpress를 이전 버전으로 다운 그레이드
- 11. URL을 JSON 버전으로 변환 하시겠습니까?
- 12. url을 단축 버전으로 바꾸기 - Ruby
- 13. Lighttpd URL을 소문자 버전으로 리디렉션
- 14. backbone.js를 사용하여 saveWine을 발행하십시오
- 15. jQuery는 양식 응답이있는 URL을 변경합니다.
- 16. Backbone.js를 사용하여 브라우저 기록 처리하기
- 17. Backbone.js를 사용하여 jQuery UI 자동 완성 위젯을 올바르게 추가하는 방법
- 18. SVN의 프로젝트를 이전 버전으로 되돌리고 HEAD 버전으로 변경
- 19. Server.transfer URL을 두 번 다시 변경합니다.
- 20. 리포지토리를 이전 버전으로 업데이트하는 방법은 무엇입니까?
- 21. jparallax 이전 버전에서 1.0 버전으로 업그레이드
- 22. 크리스탈 보고서를 이전 버전으로 다운 그레이드 하시겠습니까?
- 23. mscomctl.ocx 버전을 이전 버전으로 바꾸기 (테스트 전용)
- 24. 새 분기를 선택한 다음 이전 버전으로 롤백하십시오.
- 25. 리디렉션을 사용하여 이전 작업을 수행 할 때 이전 URL을 유지합니다.
- 26. htaccess를 사용하여 이전 사이트 URL을 다시 작성하십시오.
- 27. perl을 사용하여 URL을 이전 URL로 리디렉션하는 방법
- 28. routes.rb를 사용하여 이전 URL을 리디렉션하는 레일
- 29. PHP를 사용하여 이전 URL을 얻는 방법
- 30. WinSxS 매니페스트를 사용하여 DLL의 이전 버전으로 리디렉션하는 방법?
실제로 구멍 기록 대신 마지막 "해시"만 저장할 수도 있습니다 – mateusmaso
감사합니다! 정확히 내가 무엇을 찾고 있었는지. – Felipe
이것을 사용하면 storeRoute 메서드가 항상 사용할 라우팅 메서드보다 먼저 호출됩니다. 결과적으로 히스토리에 저장된 내용은 일관성이 없습니다. – DrewB