2013-04-16 3 views
5

예상대로 sammy.js 라우팅을 작동시킬 수 없습니다.Sammy 라우팅이 작동하지 않습니다.

다음 JavaScript가 있습니다.

(function ($) { 

    var app = $.sammy('#main', function() { 

     this.get('#/', function (context) { 
      context.log("start page"); 
     }); 

     this.get("#/another/:id/", function (context) { 
      context.log("another page with id = " + context.params["id"]);   
     }); 
    }); 

    $(function (context) { 
     app.run('#/'); 
    }); 

})(jQuery); 

나의 이해는 URL이 너무 오래 새로운 경로가 선언 된 경로 중 하나에 해당로 변경하고이있을 때마다, 나는 콘솔 로그에 관련 메시지가 표시되어야한다는 것입니다.

하지만 그렇지 않습니다.

페이지가 처음로드되면 "시작 페이지"메시지가 표시됩니다. 여태까지는 그런대로 잘됐다.

나는 다음을 가리키는 링크

  • 클릭 [내 경로]/#은/다른/1/
  • 수동으로 입력하면 [내 URL]/#/주소로 다른/1/ 내가 두 번째 경로의 메시지가 표시되지 않는, 아무 일도 일어나지 않습니다 ... >

를 입력 바 <을 기록했다.

그러나 주소 표시 줄에 두 번째 경로가 표시되면 F5를 누르거나 브라우저 새로 고침 단추를 누르면 페이지가 다시로드되고 예상되는 콘솔 메시지가 표시됩니다.

내가 잘못 이해했거나 하이퍼 링크 나 키보드가 URL 해시를 변경했을 때 Sammy가 알리지 않았습니까? 스크립트에 추가해야 할 것이 있습니까?

답변

7

각 sammy 애플리케이션은 DOM 요소에 연결되어야합니다.

따라서 #main 요소 페이지가 누락되었을 수 있습니다.

그래서 당신은 어딘가에 DOM에 #main 요소를 추가해야합니다

<div id="main"> 
</div> 

또는 당신은 선택

var app = $.sammy(function() { 

    this.get('#/', function (context) { 
     context.log("start page"); 
    }); 

    this.get("#/another/:id/", function (context) { 
     context.log("another page with id = " + context.params["id"]); 
    }); 
}); 

없이 새미를 초기화해야 그는 body 요소에 붙어서이 경우 .

Live Demo.

관련 문제