2012-10-01 2 views
1

다소 복잡 할 수 있습니다.Backbone.js : 단일 페이지 응용 프로그램, 경로 및 외부 참조 문제

이것은 SinglePage, pushState 지원 응용 프로그램입니다. 나는 구성, 경로를 가지고 : 나는 URL을 탐색 할 수 tbranyen/백본 보일러 way을 사용하고

routes: { 
     '': 'dashboard', 
     'configure/sites/:id': 'configure', 
     'configure/sites/:id/:section': 'configureSection' 
    }, 

. 대시 보드 a href="configure/sites/33에서 href를 클릭하면보기가 잘됩니다. 브라우저 URL에서`localhost : 12345/configure/sites/33 '을 볼 수 있습니다.

구성보기에는 메뉴가 있으며 내부에 <a href=이 있습니다.

<ul class="nav configure-nav"> 
<li> 
    <a href="overview" class="overview">Overview</a> 
</li> 
<li> 
    <a href="configuration" class="configuration">Configuration</a> 
</li> 

문제는 링크를 클릭하면 id이 사라집니다.

browser address bar

예상 href가 : http://localhost:12345/configure/sites/33/configuration

실제 href가 : http://localhost:12345/configure/sites/configuration

당신이 일이 어떻게 문제를 해결하는 방법 설명해 주시겠습니까?

답변

0

문제가 해결 될지는 모르겠지만 단일 페이지 응용 프로그램을 만드는 경우 "localhost : 12345 /"다음에 hashbang을 넣거나 서버에 요청을 보내야합니다.

+0

내가 말했듯이 나는 링크에서 모든 클릭을 잡아서 백본을 사용하기 위해 [that] (https://github.com/tbranyen/backbone-boilerplate/blob/master/app/main.js#L22) 트릭을 사용했다. 라우터 - 서버를 호출하지 않습니다. –

+0

및 pushState가 라우팅을 사용하도록 설정했습니다. –

+0

Ahh, 기본적으로 preventDefault가 호출됩니다. 링크가 ID에 대한 정보를 가져 오려고 시도하는 경우 문제가 발생해야하며 그 원인을 정확히 알지 못합니다. –

0

이것은 상대 링크와 절대 링크가 작동하는 방식 때문입니다. 귀하의 경우, href는 경로에서 가장 가까운 "디렉토리"에 상대적입니다 (파일 시스템을 유추하기 위해 : id 부분은 파일로 볼 수 있습니다).

경로에 후행 슬래시를 추가하면 개요 및 구성 링크가 올바르게 루팅됩니다.