Backbone JS如何呈现特定页面

时间:2011-11-18 00:55:23

标签: javascript ruby-on-rails-3.1 backbone.js coffeescript render

我刚刚开始使用Backbone JS,因为我们正在开始一个非常JS的密集型应用程序,我想遵循一个约定,以防止项目在以后的几个月和几年中看起来很恐怖。

这可能是一个简单的问题,但我无法弄清楚。

我有正常的REST动作/视图等,并添加了另一个呼叫信息。这会在单击相应链接时正确呈现索引页。

:javascript
  $(document).ready(function() {
  $("#client-clicker").click( function() {
    window.router = new Pm.Routers.ClientsRouter({clients: #{@clients.to_json.html_safe}});
    Backbone.history.start();
  });     
});

现在提出问题:

如何知道如何转到ClientsRou​​ter的索引操作?

如何指定编辑,显示或信息操作?

提前致谢!

我从来没有对js使用过“约定”,但骨干j只是有意义的!

更新

我确实发现如果我在客户端路由器中删除此行,则默认为索引中断。

  routes:
"/new"      : "newClient"
"/index"    : "index"
"/:id/edit" : "edit"
"/:id"      : "show"
".*"        : "index" <----- #deleted and it broke
"/info"     : "info"

我仍然不确定如何点击特定视图。

1 个答案:

答案 0 :(得分:2)

当您致电Backbone.history.start Backbone开始关注该位置的更改时,可以使用pushstate或hashchange事件,也可以在旧版浏览器中查看该位置。它还通过将window.location.pathname与路由表进行比较,立即触发当前位置的路由。

在您的情况下,它匹配“。*”路线。我不确定在发生这种情况时该位置是什么,但这条路线将匹配任何位置,这就是它触发索引操作的原因。

您可以通过调用路由器上的navigate方法来更改位置并选择性地触发操作。 e.g。

window.router.navigate('/new', true);

应该更改位置并且(因为您在第二个参数中传递true)会触发newClient操作。