backbone.js - 使用 Backbone.js 将现有 Web 应用程序转换为使用主题标签 URI

标签 backbone.js

我正在尝试使用 Backbone 和它的 Router 将应用程序转换为 ajax 应用程序,但是它目前使用几种不同的方法(助手)来生成链接。不幸的是,这意味着手动更改每个链接以使用主题标签是不可能的。

确保每个链接、表单发布、重定向等都被解析为可以被 Backbone 的路由器捕获的主题标签 URL 的最佳方法是什么?或者,更好的是,路由器是否可以接受来自请求的“真实 URL”?示例:对/app/mail/inbox.php 的请求被路由器中的规则捕获,并在触发处理请求的适当方法后变成 #/mail/inbox。

最佳答案

What would be the best method of ensuring every link, form post, redirect, etc. gets parsed as a hashtag URL that can be caught by Backbone's Router?

我不认为 Backbone.Router 应该处理表单帖子。它应该为您的应用程序提供 View 状态——书签友好和可刷新的 URL [1]。

如果你想“ajax化”表单,那么你可能应该为表单的提交事件添加一个处理程序,并在那里执行类似$.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);

路由器的navigate()方法将执行 history.pushState()(如果可用),回退到旧的 hashchangetrue 作为第二个参数意味着它将触发相应的处理程序操作。

[1] 另见 this presentation about Backbone

关于backbone.js - 使用 Backbone.js 将现有 Web 应用程序转换为使用主题标签 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6694731/

相关文章:

javascript - 一个 Backbone 模型用于多个 View ,谁处理 fetch()?

json - Backbone .js + REST

javascript - 无法在 Parse.com 中获取属性

javascript - 如何在删除模型 :backbone. js 和 marionettejs 时使用另一个模板

javascript - 我应该如何创建一个作用域为另一个模型的 Backbone 集合?

backbone.js - 异步添加主干路由。

javascript - 如何使用 backbone.js 路由触发 JavaScript 函数

javascript - 如何获取单击行的 id 并使用该 id 显示该行的信息 - 使用backbone.js

javascript - backbone-pageable remove() 使用了无效的 url

internet-explorer - Backbone.js 在 IE6 IE7 和 IE8 上的性能