【问题标题】:How do I change the URL without causing Backbone to re-render the page?如何在不导致 Backbone 重新呈现页面的情况下更改 URL?
【发布时间】:2014-02-14 08:37:37
【问题描述】:

我有一个 Backbone 应用程序。

在一个区域中,有子视图。这些是从主干路由器正确路由的。

routes: { primary-view(/:subview): 'someFunction' }

所以我最终得到一个 URL,例如:#/primary-view/subview

每当用户单击更改子视图的菜单项时,我都希望使 URL 保持最新。这些点击在主视图中处理,因此当用户单击这些链接之一时,重新呈现的页面的唯一部分是包含子视图的 div。

我试过了:

Backbone.history.navigate('#/primary-view/' + subview, {trigger: false});

还有:

window.location.hash = '#/primary-view/' + subview;

但这两者都会导致整个主视图被重新渲染。

【问题讨论】:

  • 你不为子视图使用事件吗?并且不改变url什么的就可以处理点击功能?

标签: javascript backbone.js


【解决方案1】:

通常这可以通过router.navigate 来实现。

每当您在应用程序中到达想要保存为 URL 的点时,调用 navigate 以更新 URL。

在您的情况下,您应该从 URL 中删除哈希

Backbone.history.navigate('/primary-view/' + subview, {trigger: false});

router.navigate('/primary-view/' + subview)

【讨论】:

  • Router.navigate 调用 History.navigate,我已经试过了。
猜你喜欢
  • 2016-10-13
  • 2020-04-20
  • 2020-12-29
  • 2016-05-25
  • 2020-10-04
  • 2011-11-27
  • 1970-01-01
相关资源
最近更新 更多