1

버튼을 클릭하면 내 사용자를 등록 URL로 라우트하고 내 라우터에서 내 register 기능을 시작하고 등록보기를 렌더링하는 버튼이 있습니다. 유일한 문제는 잘못 라우팅 된 것 같습니다. 여기 Backbone.Marionette : 올바르게 라우팅되지 않는 라우터

내 랜딩 페이지 뷰의 :

template = require './templates/landing' 
app = require '../application' 

module.exports = class LandingView extends Backbone.Marionette.ItemView 
    id: 'landing-view' 
    template: template 

    events: 
     'click .splash .get-started': 'route_register' 

    route_register: (e) -> 
     e.preventDefault() 
     console.log 'button clicked' 
     app.router.navigate('/register', {trigger: true}) 

여기 내 라우터의 내 랜딩 페이지 뷰에서

application = require('application') 
HomeView = require('views/HomeView') 
LandingView = require('views/LandingView') 
RegisterView = require('views/RegisterView') 

module.exports = class Router extends Backbone.Router 

    routes: 
     '': 'landing' 
     '/home': 'home' 
     '/register': 'register' 

    landing: => 
     console.log 'in router: landing' 
     lv = new LandingView() 
     application.layout.content.show(lv) 

    home: => 
     console.log 'in router: home' 
     hv = new HomeView() 
     application.layout.content.show(hv) 

    register: => 
     console.log 'in router: register' 
     rv = new RegisterView() 
     application.layout.content.show(rv) 

버튼을 클릭하면, 나는 CONSOLE.LOG에서 얻을 크롬 도구. 하지만 라우터에서 콘솔 로그를 얻지는 못합니다. 이것은 내 라우터를 잘못 인스턴스화 믿고 저를 주도하지만, 여기에 내가 할 방법은 다음과 같습니다

또한
class Application extends Backbone.Marionette.Application 
    initialize: => 

     @on("initialize:after", (options) => 
      Backbone.history.start(); 
      # Freeze the object 
      Object.freeze? this 
     ) 

     @addInitializer((options) => 
      # Instantiate the main layout 
      AppLayout = require 'views/AppLayout' 
      @layout = new AppLayout() 
      @layout.render() 
     ) 

     @addInitializer((options) => 
      # Instantiate the router 
      Router = require 'lib/router' 
      @router = new Router() 
     ) 

, URL 표시 줄에 주소 chanages, 예를 들어, 나는 랜딩 페이지 버튼에서 URL 변경을 클릭합니다 localhost:3000 ~ localhost:3000/register, 아직 라우터에 console.log가 표시되지 않으며 페이지가 렌더링되지 않습니다.

누구든지이 버그를 해결할 수 있습니까?

답변

2

디버깅 시간이 길어서 바보 오타가 발생합니다. 당신이 포함 된 경우

Backbone.Router라우팅에 routes 개체의 앞에 /은 제대로 작동하지 않을 수 있습니다. 슬래시를 제거했는데 모든 것이 작동합니다.

잘못된 경로 :

routes: 
    '/': 'landing' 
    '/home': 'home' 
    '/register': 'register' 

올바른 경로 :

routes: 
    '': 'landing' 
    'home': 'home' 
    'register': 'register'