我在这里冒险并假设OP的问题是基于通过导航中的锚标记或类似内容导航到应用程序的不同部分时的应用程序行为。
这就是我发现问题的方式,我简要地认为答案会拯救我的一天。尽管到目前为止这两个答案都是正确的,但它们并不能完全解决我遇到的问题。我想显示一个持久的导航栏。但是,我不希望它显示在登录页面上。我希望检测一个区域是否已经显示,我能够正确地让显示逻辑处理这个问题。
事实证明,我们都在正确的轨道上实施区域,因为这提供了精细的控制,但即使在实施上述之后,我发现我的导航栏仍然会“闪烁”并且基本上完全重新加载自身。
答案其实有点荒谬。不知何故,在过去两周我一直在做的所有 Backbone 教程和研究中,我从未遇到过实现 javascript 接口来中断正常链接行为的需要。每当单击导航项时,整个应用程序都会重新加载。路由运行正常,因此内容正确,但闪烁令人抓狂。
我在 Backbone.history.start({pushState: true}); 之后将以下内容添加到我的 app.js 文件中 代码:
// Holy crap this is SOOO important!
$(document).on("click", "a[href^='/']", function(event) {
if (!event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
event.preventDefault();
var url = $(event.currentTarget).attr("href").replace(/^\//, "");
Backbone.history.navigate(url, { trigger: true });
}
});
查看这篇文章以了解有关 keyPress 检测内容的一些解释。http://dev.tenfarms.com/posts/proper-link-handling
繁荣!在我的应用程序中添加这些东西后不再完全重新加载!
免责声明:我对 Backbone 非常陌生,以上对我来说是一个启示,这让我认为我可能在其他地方做错了,这种行为应该已经存在于 Backbone 中。如果我在这里犯了一个巨大的错误,请发表评论并帮助我纠正它。