javascript - 没有从 appRouter 调用 Backbone Marionette Controller 方法

标签 javascript backbone.js coffeescript marionette

我正在尝试从 Marionette appRouter 触发 Marionette Controller 方法,但这些方法没有在应该触发的时候触发。

您可以在 http://jsfiddle.net/gabceb/bW69k/ 查看我的代码

总而言之,代码初始化了一个 Controller 、一个 appRouter 和一个 Marionette 应用程序。我希望代码在调用适当的路由时触发 Controller 上的初始化(它确实如此)和索引方法。代码已从真实应用程序移植并简化到 Fiddler,因此这不是 Fiddler 的错。

我还通过将 appRouter 的方法更改为 index1 并让 appRouter 提示该方法不存在来验证 appRouter 使用了正确的 Controller (请注意,这只是我进行的测试,并没有实际实现在我发布在 Fiddler 上的代码中)

# app.coffee.js

class PagesController extends Marionette.Controller
    initialize: (options) =>
        alert "Controller initialized"

        return

    index: () =>
        alert "Index method called"

        return

class AppRouter extends Marionette.AppRouter
    appRoutes: {
       "" : "index"
    }

window.app = new Backbone.Marionette.Application()

window.app.addInitializer( (options) =>
    Backbone.history.start(pushState: true)
)

window.app.addInitializer( (options) =>
    window.app.appRouter = new AppRouter(controller : new PagesController())
)

window.app.start()

我已经对此进行了一些调试,看起来 Backbone.History 处理程序数组在页面加载时为空。这就是代码在 Backbone 代码中的样子。

// Attempt to load the current URL fragment. If a route succeeds with a
// match, returns `true`. If no defined routes matches the fragment,
// returns `false`.
loadUrl: function(fragment) {
  fragment = this.fragment = this.getFragment(fragment);
  return _.any(this.handlers, function(handler) {
    if (handler.route.test(fragment)) {
      handler.callback(fragment);
      return true;
    }
  });
},

最佳答案

启动Backbone.history后创建AppRouter的问题。

您可以在这里了解更多信息:Right place to start Backbone.history?

关于javascript - 没有从 appRouter 调用 Backbone Marionette Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22416246/

相关文章:

javascript - Tumblr 风格的 UserHoverCard

javascript - 如何让我的 API 请求获取更新的数据库?

javascript - 使用 'clipboard.js' 不带按钮将文本复制到剪贴板

javascript - getElementsByTagName 对于 IE 和 Firefox 给出了相同的结果

backbone.js - 具有辅助功能的 Handlebars 逻辑运算

node.js - express、jade、node.js、coffeescript、使用变量数组和 for 循环设置路由

javascript - 如何在 CoffeeScript 中新定义的函数上调用函数

javascript - 在 BackboneJS 中,关于设置模型属性的说明

ruby-on-rails - Backbone + Rails 'Paperclip' 异步上传

javascript - 生态模板: Combine multiple templates from the command-line?