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鉻工具。但我從來沒有從路由器獲取console.logs。這使我相信,我的路由器是不正確的實例,但在這裏就是我如何做到這一點:
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()
)
此外,在地址欄的地址chanages,例如,當我點擊着陸頁按鈕,從URL變化localhost:3000
到localhost:3000/register
,但我沒有在路由器中獲取console.log,並且該頁面未呈現。
任何人都可以幫我找出這個bug嗎?