主干JS如何渲染特定页面

Backbone JS how to render a specific page

本文关键字:何渲染 JS 主干      更新时间:2023-09-26

我刚刚开始使用Backbone JS,因为我们正在开始一个非常密集的JS应用程序,我想遵循一个惯例,以防止项目在以后的几个月和几年里看起来很可怕。

这可能是一个简单的问题,但我想不出来。

我有正常的RESTful操作/视图等,并添加了另一个调用信息只是玩。这将在单击相应链接时正确地呈现索引页。

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

现在是问题:

如何知道去到ClientsRouter的索引动作?

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

提前感谢!

我从未使用过"约定"对于js来说,但是主干js才有意义!

更新

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

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

我仍然不确定如何击中一个特定的视图

当你调用Backbone.history.start时,Backbone开始监视位置的变化,要么使用pushstate或hashchange事件,要么在旧的浏览器中轮询位置。它还通过比较window.location.pathname与路由表,立即触发当前位置的路由。

在你的例子中,它匹配"。*"路线。我不确定发生这种情况时的位置,但这个路由将匹配任何位置,所以这就是它触发索引操作的原因。

你可以通过调用路由器上的navigate方法来改变位置并选择性地触发一个动作。例如

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

应该改变位置并且(因为你在第二个参数中传递的是true)触发newClient动作