URL 탐색/라우팅 문제가 있습니다. 예를 들어, 나는 현재 #contact/new
에 있으며 다시 동일한 URL을 요청하고 해당 함수를 호출하지 않습니다. URL을 예를 들어 #contact/edit
으로 변경하고 #contact/new
을 클릭해야합니다. 이제 동일한 URL에서 URL을 라우팅하는 것이 문제가됩니까?Backbone.js가 현재 URL과 동일한 URL로 라우팅되지 않습니다.
답변
동일한 문제가 있습니다. 동일한 URL을 example.com/#/new (동일한 url을 두 번 호출) 라우팅하면 경로가 트리거되지 않습니다.
var url = window.location.href;
url = url.substring(0,url.indexOf('#')) + '#/';
window.location.replace(url);
또는 쉽게 : 나는 각 라우팅 후 URL을 변경하여 해결 방법을 만들어
window.location.hash = '#/';
을하지만이 솔루션은 나에게 조금 더러운 것 같다.
window.location.hash = '# /'; 경로를 시작합니다. – Hontoni
저는이 문제도 해결하려고 노력해 왔습니다. 하지만 지금은해야
var AppRouter = Backbone.Router.extend({...});
var app_router = new AppRouter;
function LoadLink(Link) {
var Timestamp = new Date().getTime();
app_router.navigate("#/" + Link + "/ts_" + Timestamp);
}
이 방법은 저를 여러 번 클릭 할 수있는 링크를 가질 수 있습니다 : 내 최신 시도가 링크에 타임 스탬프 필드를 추가하는 기능을 추가했다, 다음 탐색 함수를 호출 경로를 설정할 때 타임 스탬프를 고려하십시오. 나중에 나를 물기 위해 다시 올 수도 있습니다. :(
나는 파티에 늦었 알고 있지만, 나는 탐색 기능을 사용하여 유사한 문제를 해결
같은 것을 시도해보십시오. 라우터가 생각하는 URL을 변경
this.navigate("#contact/edit", {trigger: false, replace: true});
을 실제로 액션을 호출하지 않고 # 접촉/편집에 있습니다
내가 미리 루트에 자동 탐색을 호출하여이 문제를 해결 결국:.
이것은 추가 기록 항목을 만들지 만 내 경우에는 중요하지 않습니다.
또한 이것이 Backbone.history
개체의 fragment
속성을 변경하여 기록 항목없이 작동시킬 수 있지만이 속성은 개인 있어야하는데, 그래서 나는 그것으로 장난 :
을하기 전에 두 번 생각 fragment 속성은 현재 URL을 navigate 함수에 전달 된 URL과 비교하는 데 사용되는 것으로, 일치하지 않으면 경로가 실행됩니다.
저는 이런 종류의 문제가 없습니다. 예제 코드를 게시 하시겠습니까? – sntran
왜 같은 URL로 라우팅해야합니까? 이벤트로 다시 호출 할 기능을 트리거 할 수 있습니다. – teggy
아마도 당신이 찾고있는 대답 : http://stackoverflow.com/a/10181053/126600 – zack