2012-02-25 7 views
3

나는 사이트 탐색을 멋지게 처리하고 브라우저의 뒤로/앞으로 단추를 클릭 할 때도 작동하는 라우터가 있습니다.백본 라우터 문제

define(function(require) { 
var $   = require('jquery'), 
    _   = require('underscore'), 
    Backbone = require('backbone'); 

var AppRouter = Backbone.Router.extend({ 

    routes: { 
     'home'  : 'homeHandler', 
     'webdesign' : 'webHandler', 
     'mobile'  : 'mobileHandler', 
     'javascript' : 'javascriptHandler', 
     'hosting' : 'hostingHandler', 
     'contact' : 'contactHandler' 
    }, 

    initialize: function() { 
     this._bindRoutes(); 
     $('.link').click(function(e){ 
      e.preventDefault(); 
      Backbone.history.navigate($(this).attr("href"),true); 
     }); 
     if(history && history.pushState) { 
      Backbone.history.start({pushState : true}); 
      console.log("has pushstate"); 
     } 
     else { 
      Backbone.history.start(); 
      console.log("no pushstate"); 
     } 
     console.log("Router init with routes:",this.routes); 
    }, 

    homeHandler: function(e) { 
     require(['../views/home-content-view', '../views/home-sidebar-view'], 
      function(HomeContent, HomeSidebar) { 
       var homeContent = new HomeContent(); 
       homeContent.render(); 
       var homeSidebar = new HomeSidebar(); 
       homeSidebar.render(); 
     }); 
    }, 

    webHandler: function(e) { 
     require(['../views/web-content-view', '../views/web-sidebar-view'], 
      function(WebContent, WebSidebar) { 
       var webContent = new WebContent(); 
       webContent.render(); 
       var webSidebar = new WebSidebar(); 
       webSidebar.render(); 
     }); 
    }, 

    ... 

}); 

return AppRouter; 
}); 

분명히, 내가 부족 뭔가 : 직접 URL을 입력 할 때 그러나, 나는 404

을받을 것은 여기 내 라우터입니다.

모든 설명이 크게 감사하겠습니다.

감사합니다, 스테판

+0

사이드 노트 :'homeHandler'와'webHandler' 핸들러는 거의 동일합니다. 하나의 핸들러로 그들을 병합하는 것을 고려하십시오 ... –

+0

예제를 주시겠습니까? 어떤 URL을 직접 입력하고 있습니까? –

+0

예 : mydomain.com/webdesign – bardu

답변

4

백본은 웹 페이지에서 작동 (즉 이미 브라우저에로드 된). 브라우저에 직접 URL을 입력하면 해당 URL에 대한 HTTP 요청이 서버로 전송됩니다. 서버는 백본에 의해 관리되지 않습니다. HTTP 요청이 발생할 때 서버에서 동작을 정의해야합니다.