Backbone.js:未达到路由器回调

Posted

技术标签:

【中文标题】Backbone.js:未达到路由器回调【英文标题】:Backbone.js: Router callback not reached 【发布时间】:2013-08-29 04:22:06 【问题描述】:

我在获取要路由的简单应用示例时遇到问题。我正在使用backbone-on-rails gem。

这是我的 App.js.coffee:

    window.App =
      Models: 
      Collections: 
      Views: 
      Routers: 

 $(document).ready ->
    MyRouter = Backbone.Router.extend(
       routes:
        '' : 'index'

        index: ->
            console.log("Inside router")
            new App.Views.HomeIndex()
    )
    router = new MyRouter
    Backbone.history.start
    console.log(router.routes[Backbone.history.fragment])

路由器永远不会到达索引回调并且视图永远不会被渲染。

这是由 Rails 呈现的 html 页面:

<!DOCTYPE html>
<html>
<head>
  <title>App</title>
  <link href="/assets/application.css?body=1" media="screen" rel="stylesheet" />
  <script src="/assets/jquery.js?body=1"></script>
<script src="/assets/jquery_ujs.js?body=1"></script>
<script src="/assets/underscore.js?body=1"></script>
<script src="/assets/backbone.js?body=1"></script>
<script src="/assets/app.js?body=1"></script>
<script src="/assets/homes/index.js?body=1"></script>
<script src="/assets/models/home.js?body=1"></script>
<script src="/assets/collections/homes.js?body=1"></script>
<script src="/assets/views/homes/homes_index.js?body=1"></script>
<script src="/assets/routers/homes_router.js?body=1"></script>
<script src="/assets/routers/homes_routers.js?body=1"></script>
<script src="/assets/application.js?body=1"></script>
  <meta content="authenticity_token" name="csrf-param" />
<meta content="sA25aKKc/j2EJL6k8J0gm8SxGU2mHRhH8Sb6Sye81Ac=" name="csrf-token" />
</head>
<body>

<div id="app"></div>

</body>
</html>

我需要做什么才能正确实例化一个主干路由器并让它路由到我的视图?

【问题讨论】:

除非您的视图从它的 ctor 呈现自己,否则您不会在任何地方调用 render。 【参考方案1】:

看起来您只需要调用Backbone.history.start 而不是简单地引用它。这只是引用函数:

Backbone.history.start

这样称呼它:

Backbone.history.start()

函数调用括号仅在您提供一些参数时是可选的。

演示:http://jsfiddle.net/ambiguous/hUZUV/

【讨论】:

你完全正确。不敢相信我错过了!非常感谢!

以上是关于Backbone.js:未达到路由器回调的主要内容,如果未能解决你的问题,请参考以下文章

在 BackBone js 中渲染视图时调用 javascript。渲染后回调?

Jquery Draggable 和 Backbone.js 从可放置成功回调内部获取对骨干模型的引用

Backbone.js:查看状态和路由

Backbone.js 路由器初始化不会立即运行

Backbone.js - 集合未定义

Backbone.js URL 路由