首页 > 解决方案 > Ember,更改当前 url 和 LinkTo 目标而不重新加载数据

问题描述

如何在不重新加载数据的情况下更改 url 和 LinkTo 组件?

设计一个用户可以更改其项目名称的应用程序。当前 url 包含项目名称,因此必须更新。除了 url 和链接必须修改(没有数据重新加载)

考虑这条主要路线:

this.route('routeName', { path: '/:project_name/:param2/:param3' }, function () {
  ...many sub routes
});

replaceURL 方法允许更改 url:

this.router.location.replaceURL(urlWithNewProjectName)

LinkTo 使用示例(未指定模型,使用默认值):

{{#LinkTo 'routeName'}}link{{/LinkTo}}

例如以下失败:

// this code in the router has no effect on LinkTo in templates.
const params = this.paramsFor(this.routeName);
params.project_name = "newName";

LinkTo 组件继续以旧网址为目标。如何更改路由的动态段默认值?

标签: ember.jsember-router

解决方案


您需要将动态段传递给模板中的 LinkTo 组件。当这些道具发生变化时,链接将更新。从这里开始查看指南以获取更多信息:https ://guides.emberjs.com/release/templates/links/#toc_example-for-multiple-segments


推荐阅读