当我在 transitionTo() 中添加 queryParam 时,我的 ember 应用程序完全重新加载

My ember application fully reloads when I add a queryParam in a transitionTo()

我正在根据用户在搜索表单中输入的数据进行搜索,并重定向到将此数据作为 queryParam 的路由,这会完全重新加载应用程序。

我这样转换: 其中'search'是用户输入的数据

this.get('router').transitionTo('private.route1', { queryParams: { search: search } });

在目标路由的控制器中我已经声明了这个queryParam

export default Controller.extend({
    queryParams: ['search'],
});

然后我根据这个 queryParam 进行了 API 搜索。 一切正常,但是当我对这条路线执行 transitionTo() 时,由于某种原因,符号 '?' 被添加到我的路线路径的开头,这会重新加载页面。

我预期的结果是转换完成 url 看起来像这样并且应用程序没有完全重新加载:

http://localhost:4200/#/private/route1?search=userdata

而真正的结果是:

http://localhost:4200/?#/private/route1?search=userdata

在路径的开头使用符号 '?',这会导致应用程序完全重新加载。

在一次又一次地检查代码并尝试不同的用例之后,我意识到发生的事情不是 ember 及其 queryParams 的问题,而是我获取用户数据的形式我正在执行本机提交的搜索,这刷新了应用程序并添加了“?”到路径的起​​点。 解决方案:在搜索操作中

actions:{
  search(event){
    event.preventDefault();
    // next code....
  }
}