Backbone.js won';t路由到与当前URL相同的URL

Backbone.js won';t路由到与当前URL相同的URL,backbone.js,routing,backbone-routing,Backbone.js,Routing,Backbone Routing,我在导航/路由URL时遇到问题。例如,我当前在#contact/new中,我再次请求相同的url,但它没有调用相应的函数。我需要将URL更改为例如#contact/edit,然后单击#contact/new即可。从同一URL路由URL现在是个问题?我也有同样的问题。 路由同一url example.com/#/new(调用同一url两次)不会触发路由。 我通过在每次路由后更改url创建了一个变通方法: var url = window.location.href; url = url.subst

我在导航/路由URL时遇到问题。例如,我当前在
#contact/new
中,我再次请求相同的url,但它没有调用相应的函数。我需要将URL更改为例如
#contact/edit
,然后单击
#contact/new
即可。从同一URL路由URL现在是个问题?

我也有同样的问题。 路由同一url example.com/#/new(调用同一url两次)不会触发路由。 我通过在每次路由后更改url创建了一个变通方法:

var url = window.location.href;
url = url.substring(0,url.indexOf('#')) + '#/';
window.location.replace(url);
或更简单:

window.location.hash = '#/';

但是这个解决方案在我看来有点脏。

我也一直在努力解决这个问题。我最近的一次尝试是添加一个函数,将时间戳字段附加到链接,然后调用navigate函数:

var AppRouter = Backbone.Router.extend({...});

var app_router = new AppRouter;

function LoadLink(Link) {
  var Timestamp = new Date().getTime();
  app_router.navigate("#/" + Link + "/ts_" + Timestamp);
}

这个方法允许我有一个可以被点击多次的链接,但是现在我在设置路由时必须考虑时间戳。它可能会回来咬我(

我知道我参加聚会迟到了,但我通过使用导航功能解决了类似的问题

尝试以下方法:

this.navigate("#contact/edit", {trigger: false, replace: true});

这会更改路由器认为它在上的URL#联系/编辑,而不实际调用该操作。

我通过提前调用无声导航到根目录来解决此问题:

var url = window.location.pathname.substr(Backbone.history.root.length);
this.navigate('/', { trigger: false });
this.navigate(url, { trigger: true });
请记住,这将创建一个额外的历史记录条目,但对我来说,这并不重要

通过更改
主干.history
对象的
fragment
属性,您也可以在没有历史记录条目的情况下实现此功能,但此属性应该是私有的,因此在使用它之前我会三思而后行:)


fragment属性用于将当前URL与传递给navigate函数的URL相匹配,因此,如果它们不匹配,则将执行路由。

我没有这种问题。你介意发布一个示例代码吗?为什么你需要路由到同一个url?您可以使用事件触发要再次调用的函数。您可能正在寻找的答案是: