我正在尝试使用Backbone和它的路由器将应用程序转换为ajax应用程序,但它目前使用几种不同的方法(助手)生成链接.不幸的是,这意味着手动更改每个链接以使用主题标签是不可能的.
什么是确保每个链接,表单发布,重定向等的最佳方法被解析为可以被Backbone的路由器捕获的#标签URL?或者,更好的是,路由器是否可以接受来自请求的"真实URL"?示例:对路由器中的规则捕获对/app/mail/inbox.php的请求,并在触发处理请求的适当方法后将其转换为#/ mail/inbox.
什么是确保每个链接,表单发布,重定向等的最佳方法被解析为可以被Backbone的路由器捕获的#标签URL?
我不认为这Backbone.Router应该处理,比如说,形成帖子.它应该给你的应用程序视图状态 -书签友好和可刷新的URL [1].
如果你想'ajaxify'表单,那么你可能应该为表单的提交事件添加一个处理程序并执行类似$.ajax()的操作,以防止默认操作.
关于普通旧链接,History.pushState()最近已向Backbone添加了支持.这意味着您可以将路由定义为/app/*,而不需要替换旧href属性.但是,您仍然需要捕获链接单击事件以防止默认操作.
例如:
var handle_link_click = function(e) {
path = $(e.target).attr('href');
app.main_router.navigate(path, true); // This.
e.preventDefault();
};
$('a:internal').click(handle_link_click);
Run Code Online (Sandbox Code Playgroud)
路由器的navigate()方法会在history.pushState()可用的情况下完成,然后再回到旧的状态hashchange.而true作为第二个参数意味着它将触发相应的处理程序操作.
[1]另见关于Backbone的演示文稿
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |