访问页面时未触发主干网/Marionette路由器事件

Backbone/Marionette router event not firing when page is accessed

本文关键字:主干网 Marionette 路由器 事件 访问      更新时间:2023-09-26

我在Backbone.js应用程序中获取导航到页面的事件时遇到问题。首先,相关代码:

*users_app.js.coffee*

@Demo.module "UsersApp", (UsersApp, App, Backbone, Marionette, $, _) ->
    class UsersApp.Router extends Backbone.Marionette.AppRouter
        appRoutes:
            "users" : "listUsers"
    UsersApp.API =
        listUsers: ->
            console.log "listUsers"
    App.addInitializer ->
        new UsersApp.Router
            controller: UsersApp.API

app.js.coffee

@Demo = do(Backbone, Marionette) ->
  App = new Marionette.Application
  App.on "initialize:before", (options) ->
    @currentUser = App.request "set:current:user", options.currentUser
  App.reqres.setHandler "get:current:user", ->
    App.currentUser
  App.addRegions
    headerRegion: "#header-region"
    mainRegion: "#main-region"
    footerRegion: "#footer-region"
  App.addInitializer ->
    App.module("HeaderApp").start()
    App.module("FooterApp").start()
  App.on "initialize:after", ->
    if Backbone.history
      Backbone.history.start
  App

我已经在控制台中测试过了,我可以手动调用函数listUsers,只需一个简单的Demo.UsersApp.API.listUsers()。然而,listUsers在页面加载时不会启动。这个实现似乎也符合Marionette文档

有什么想法吗?有没有一种简单的方法可以在控制台中触发appRoutes事件来测试它?

您可能需要在appRouter:中指定一个控制器

{
    controller: UsersApp.API
}