2013-05-16 2 views
3

DurandalJS를 사용하는 SPA 앱이 멋지게 작동합니다. 링크가 라우팅되고보기 모델이 활성화됩니다.DurandalJS 앱에서 앵커를 무시하십시오.

문제는 실제로 서버에있는 페이지를 가리키는 앵커가 있습니다. 이 페이지를 실제로 쿼리하려면 브라우저가 필요합니다 (asp.net MVC 페이지).

Durandal의 라우터는 상대적인 (또는 동일한 도메인의 경우 실제로) 모든 링크에 연결되어 있고 루트가없는 경우 라우터의 handleInvalidRoute 메서드를 호출합니다.

Durandal에게이 URL을 전달하지 말라고하는 방법을 모르겠다. 중간/Ctrl + 클릭 기능도 유지해야합니다.

문서는 도움이되지 않으며 Google에서 아무 것도 나타나지 않았습니다. 또한 라우터/SammyJs 코드를 살펴 보려고했지만 명백한 것을 볼 수 없었습니다.

This question은 내 것과 같은 것처럼 보이지만 대답은 나를 위해 작동하지 않습니다. 내 URL은 모두 실제 URL (해시 프리픽스가 아닌)이므로 PushState를 끌 수는 없습니다.

답변

3

에서

target="_top" 

앵커에. 이렇게하면 새 탭 동작 (Ctrl + 클릭, 가운데 클릭, 새 탭 컨텍스트 메뉴 열기)이 가능하며 링크를 클릭하면 Sammy 라우팅을 거치지 않고 현재 창에서 열립니다!

1

도움이 될지 확실하지 않지만 location.assign이라는 클릭 바인딩을 만들었습니다. PHP를 사용 했는데도 여전히 작동해야합니다. 다음은 예입니다 : 내가 찾은 가장 쉬운 방법은 지금까지 (예 : http://myapp.com/whatever-that-is-not-a-sammy-route를) 절대 URL을 생성하고 추가하는 것이 었습니다보기에서

<a data-bind="click: goToMyLink">Go</a> 

뷰 모델

goToMyLink: function() { 
    location.assign('myLink.php'): 
} 
+0

이러한 종류의 작동하지만 Chrome에서는 중간 클릭 또한 click 이벤트를 호출하며 새 탭이 열리지 않습니다. –

관련 문제