2012-03-06 4 views
6

Backbone의 라우팅 기능에 대한 몇 가지 기본 사항을 놓치고 있다고 생각합니다.Backbone JS Routing이 예상대로 작동하지 않습니다.

나는 응용 프로그램을 짓고 있어요 그리고 그렇게 같은 같습니다 브라우저에 주소 표시 줄에 URL을 변경이 시점에서

file: app.js

App = {} 
App.nav = new Backbone.Router; 
require('app/controller'); 

file: controller.js

App.nav.route('home', 'home', function() { 
    console.log("Home Activated"); 
}); 

App.navigate('home'); 

/home하지만 아무 것도 일어나지 않으며 콘솔 메시지가 Home Activated이 아닙니다.

내 자신의 라우팅 클래스 (예 : Backbone.Router.extend({}))를 사용해 보았지만 아직 초기화해야 할 필요가 없으므로 포인트를 보지 못했습니다. 내 앱에서 중앙 기록/탐색을 사용하려고합니다. 모든 모듈/컨트롤러는 모든 컨트롤러에 대해 라우터를 만드는 것이 아니라 라우팅을 추가합니다.

내가 뭘 잘못하고 있니?

답변

15

http://documentcloud.github.com/backbone/#Router-navigate

를 문서에서 :

을 당신은 또한 경로 함수를 호출하려면 true로 트리거 옵션을 설정합니다.

그러나 OlliM이 쓴대로 기록을 먼저 활성화해야합니다!

그래서 당신의 대답은 다음과 같아야합니다

Backbone.history.start(); 
App.nav.navigate('home', {trigger: true}); 

편집 : 은 "탐색"그것은 나에게 상처와 상심의 세계를 구원으로 난 그냥이 문제를 지적 할

+1

'{트리거 : 사실}를 추가'여기 해결책의 일부가 아닙니다. 백본은 기본적으로 트리거합니다 : 옵션을 지정하지 않으면 true입니다. 다음은 코드 단편입니다. 'navigate : function (fragment, options) { if (! History.started) false false; if (! options || options === true) options = {trigger : !! options}; ' – Kinergy

+0

링크가 404 개 있습니다. – NuclearPeon

1

을 넣어 잊어 버렸습니다.

당신이 그런

Backbone.router.navigate('/some/page'); // does not work 

로 사용자 정의 페이지로 라우팅된다 그리고 그것은 작동하지 않을 나타나면. 이것은 나에게 문제 해결의 몇 시간을 비용 뒤에 '/'

Backbone.router.navigate('/some/page/'); // works 

...

관련 문제