Событие маршрутизатора Backbone/Marionette не запускается при доступе к странице

У меня возникли проблемы с запуском события при переходе на страницу в моем приложении 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 не срабатывает при загрузке страницы. Эта реализация также соответствует Документация по марионеткам

есть идеи? Есть ли простой способ запустить событие appRoutes в консоли, чтобы проверить его?


person mattmattmatt    schedule 16.07.2013    source источник
comment
Под не стрельбой вы имеете в виду, что если вы зайдете на адрес /index.html#users listUsers не вызывается?   -  person Ingro    schedule 16.07.2013
comment
Я имею в виду, что listUsers (строка) не выводится на консоль.   -  person mattmattmatt    schedule 16.07.2013
comment
Да, действительно, но используете ли вы этот маршрут в своем браузере? потому что в вашем коде не задан маршрут по умолчанию.   -  person Ingro    schedule 16.07.2013
comment
Я вручную вводил его в браузере. Однако в итоге я откатился на последнюю версию и пересобрал, и теперь все работает. Слава Богу за контроль версий.   -  person mattmattmatt    schedule 21.07.2013


Ответы (1)


Вам может понадобиться указать контроллер в appRouter:

{
    controller: UsersApp.API
}
person Joel Ephroni    schedule 23.07.2013