javascript - Backbone 路由器导航和 anchor href

标签 javascript backbone.js

在支持主干的应用程序中,我看到代码继续使用 <a href="#foo"></a> ,而 anchor 点击由 Backbone 事件处理程序处理。

或者,可以通过以下方式处理到 #foo 的导航:

Router.history.navigate("foo");

我相信后者是更好的方法,因为它允许轻松地迁移到 HTML5 的 PushState 功能或从 HTML5 的 PushState 功能迁移出来。如果我们确实使用pushState,对于不支持pushState的浏览器,Backbone将能够优雅地降级为#foo。

由于我对 Backbone 还很陌生,有经验丰富、知识渊博的人可以证实情况确实如此吗?

最佳答案

我个人已启用 pushState 并使用 Tim Branyen 的 Backbone 样板 adding a click handler 中采用的方法。将所有链接点击发送至navigate,除非它们具有data-bypass 属性:

$(document).on("click", "a:not([data-bypass])", function(evt) {
  var href = { prop: $(this).prop("href"), attr: $(this).attr("href") };
  var root = location.protocol + "//" + location.host + Backbone.history.options.root;

  if (href.prop && href.prop.slice(0, root.length) === root) {
    evt.preventDefault();
    Backbone.history.navigate(href.attr, true);
  }
});

这工作得很好,正如 @nickf 提到的,它的优点是你不必使用 hash/hashbang hack,即使对于不支持 pushState 的浏览器也是如此。

关于javascript - Backbone 路由器导航和 anchor href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12081894/

相关文章:

javascript - 为什么 .ico ( Base64 ) 看起来浪费了这么多空间?

javascript - 对象未定义到模块中,Nodejs javascript

javascript - backbone.js 复杂模型

javascript - 将数据传递给 Backbone Js 中的 View 在浏览器中看不到

javascript - 我想我没有正确使用 Backbone JS 的 View ?

javascript - Android:如何在加载资源时显示动画启动画面

javascript - jQuery-对话框删除窗口大小

Javascript 获得更快的指针事件

ios - 在移动 Safari(iOS 模拟器)中单击按钮后触发 mouseUp

jquery - Backbone Marionette 区域 + 布局 + View 层次结构和响应能力