当我在 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....
}
}
我正在根据用户在搜索表单中输入的数据进行搜索,并重定向到将此数据作为 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....
}
}