【问题标题】:Backbone/Marionette router event not firing when page is accessed访问页面时未触发主干/木偶路由器事件
【发布时间】:2013-07-15 02:18:30
【问题描述】:

我无法在我的 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 documentation

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

【问题讨论】:

  • “不触发”是指如果你去地址 /index.html#users listUsers 不会被调用?
  • 我的意思是“listUsers”(字符串)没有被输出到控制台。
  • 是的,但是您是否使用浏览器访问了该路径?因为在你的代码中没有设置默认路由。
  • 我是在浏览器中手动输入的。但是,我最终回滚到上一个版本并重建,现在它可以工作了。感谢上帝的版本控制。

标签: javascript backbone.js coffeescript marionette backbone-routing


【解决方案1】:

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

{
    controller: UsersApp.API
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多