我刚刚开始使用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();
});
});
现在提出问题:
提前致谢!
我从来没有对js使用过“约定”,但骨干j只是有意义的!
我确实发现如果我在客户端路由器中删除此行,则默认为索引中断。
routes:
"/new" : "newClient"
"/index" : "index"
"/:id/edit" : "edit"
"/:id" : "show"
".*" : "index" <----- #deleted and it broke
"/info" : "info"
我仍然不确定如何点击特定视图。
答案 0 :(得分:2)
当您致电Backbone.history.start
Backbone开始关注该位置的更改时,可以使用pushstate或hashchange事件,也可以在旧版浏览器中查看该位置。它还通过将window.location.pathname与路由表进行比较,立即触发当前位置的路由。
在您的情况下,它匹配“。*”路线。我不确定在发生这种情况时该位置是什么,但这条路线将匹配任何位置,这就是它触发索引操作的原因。
您可以通过调用路由器上的navigate
方法来更改位置并选择性地触发操作。 e.g。
window.router.navigate('/new', true);
应该更改位置并且(因为您在第二个参数中传递true)会触发newClient
操作。