2011-11-21 4 views
8

크롬 앱을 사용하려면 클라이언트 측 라우팅 솔루션이 필요합니다. 몇 가지 조사를 해본 결과 crossroads.js처럼 잘 어울립니다. 내 html 파일에 포함 시키면 작동하지 않는 것 같습니다. 내가클라이언트 측 라우팅. 어떻게 작동합니까?

crossroads.addRoute('/news/{id}', function(id){ 
    alert(id); 
}); 
crossroads.parse('/news/123'); 

과 같은 코드를 사용하는 경우 즉, 브라우저의 URL 표시 줄에 페이지의 경고 '123'하지만 난 입력하면 '/ 뉴스/321'대신 '321 경고의 브라우저의 기본 동작을 예비 적 '. 내가 도대체 ​​뭘 잘못하고있는 겁니까. (또한 제목이 넓다는 것을 알지만 크로스로드와 관련된 어려움을 생각합니다 .js는 특히 크로스 도로보다 일반적입니다. 예를 들어 주어집니다.)

+0

이동 않습니다 진짜 페이지? 또는 아약스 용 앵커 태그의 일부입니까? – topherg

+0

@cgoddard Chrome을 사용하고 있는데 도메인이있는 "/ news/123" – danwoods

+0

에 대한 Google 검색을 수행합니다 ... – topherg

답변

8

같은 저자).

Crossroads 페이지의 문서에서 Hasher를 사용해야한다고 알려줍니다 (widow.location 막대를 모니터링하는 데 사용되므로 Hasher를 사용해야합니다).

따라서 Hasher를 사용하여 초기화해야만 Hasher에 "교차로"경로를 추가하여 특정 경로에 대한 모니터링을 시작할 수 있습니다.

//setup crossroads 
crossroads.addRoute('foo'); 
crossroads.addRoute('lorem/ipsum'); 
crossroads.routed.add(console.log, console); //log all routes 

//setup hasher 
hasher.initialized.add(crossroads.parse, crossroads); //parse initial hash 
hasher.changed.add(crossroads.parse, crossroads); //parse hash changes 
hasher.init(); //start listening for history change 

//update URL fragment generating new history record 
hasher.setHash('lorem/ipsum'); 

http://millermedeiros.github.com/crossroads.js/

+0

나는 Hasher가 OP에 어떤 용도가 있다고 생각하지 않는다. – ericosg

+0

https://github.com/millermedeiros/crossroads.js/issues/47 prototype.apply에 대한 whatch out이 잘못된 유형 – roo2

6

명령 parse 문자열에서 모양과 그것을 기반으로 작업을 수행하는 교차로를 알려줍니다.

따라서 crossroads.parse('/news/123');의 경우 항상 /news/123을 사용합니다.

당신이, 당신은 구문 분석 방법에 그 값을 사용해야합니다 당신이 브라우저의 주소 표시 줄에있는 구문 분석 교차로를 원하기 때문에 : 당신은/뉴스에 갈 때/123가에

crossroads.parse(document.location.pathname); 
+4

이거나 쿼리 문자열을 포함하기 위해'crossroads.parse (document.location.pathname + document.location .search)' – casey

관련 문제