2013-08-23 5 views
0

를 통해 다시 갈 때 나는 라우터가 (크게 여기에 데모 목적으로 단순화) 다음과 다소 유사한 정의 실행되지 , 내가 생성 한 역사를 거쳐 돌아 가기 위해 뒤로 버튼을 누르면 경로의 각 항목이 시작됩니다. 즉, 초기 항목에 도달 할 때까지입니다. 이 시점에서 URL이 해당 기록 항목으로 업데이트되었지만 그 시점의 URL을 해석해야하는 경로는 실행되지 않습니다. 여기에 무슨 일이 일어날 지 모릅니다. 역사가 어떻게 작동하는지 몇 가지 잘못된 가정을하고 있습니까?초기 경로는 역사

편집 : 그것은 내가 일치하지 않는 결과를 얻을 것 같다

- 그것은 항상 실행하지 않습니다 단지 초기 항목, 그것은 때때로 나는 다시 역사를 통해 한 갔다 이번이 처음 이후 아무것도입니다. 즉, 한 번 뒤로 버튼을 클릭하면 URL이 변경되고 경로가 올바르게 실행됩니다. 나는 다시 그것을 쳤다, url 변경, 길은 발사하지 않는다. 그것은 나에게 뭔가 잘못하고있는 것을 때린다. 그러나 나는 단서가 없다.

답변

0

나는이 문제를 발견했습니다. 쿼리 문자열을 사용하고 응용 프로그램 내의 작업을 기반으로 쿼리 문자열을 업데이트했습니다. 쿼리 문자열을 수정할 때마다 다른 기록 항목을 추가했지만 기록 항목의 실제 경로 부분이 항상 변경되는 것은 아닙니다. 백본은 동일한 경로를 기반으로 다른 쿼리를 사용하여 다른 작업을 수행하지 않으므로 쿼리 문자열을 사용하지 않고 그냥 대신 편안한 URL을 만들어야했습니다. 일단 내가 그랬 으면, 역사는 잘 돌아갔다.

0

이유를 묻지 말고, 트리거하지 않으면 브라우저의 뒤로 버튼이 제대로 작동하지 않는 것 같습니다 : true에서 @navigate.

+0

나는 그 장면을 주었지만 나는 같은 결과를 얻었다. – kinakuta

0

매우 간단한 가정은 Backbone.history.start({ pushState:true });이 잘못된 곳에서 사용된다는 것입니다.

내가 아는 한 백본 히스토리 시작은 라우터 인스턴스를 만든 후에해야합니다. 좋아요,

var router = new MyRouter(); 
Backbone.history.start({ pushState:true }); 
+0

라우터의 초기화 코드 외부로 옮겨 보았습니다.하지만 여전히 같은 문제입니다. 이제는 문제가 내 쿼리 문자열 사용과 관련이 있다고 생각합니다. 경로가 실제로 업데이트되는 쿼리 문자열 일 때 실제로 다르지는 않지만 적어도 한 번 작동하기 때문에 여전히 혼란 스럽습니다. – kinakuta

+0

글쎄, 내 질문 스트링과 관련이 없다. 왜냐하면 내가 더 이상 사용하지 않기 때문이다. Backbone.history.start ({pushState : true})를 어디에 두 었는지는 중요하지 않습니다. 첫 번째 backbutton click에서 작동하지만 아무 작업도하지 않아도 관계없이 동일한 동작을 얻습니다. – kinakuta