Ember 带有 queryParams 的 TransitionTo 不工作

Ember TransitionTo with queryParams not working

我是 ember 的新手,我正在尝试将 transitionTo 与 queryParams 一起使用,但我无法让它工作我尝试了很多解决方案,但我无法找出是什么我的代码错了。这里是我要在两者之间转换的两条路线的代码:

1- index.js:

export default Ember.Route.extend({
 setupController: function(controller, model) {
 this._super(controller, model);
 controller.set("model", model);
 },
 model() {
  return {
   searchQuery: ""
  };
 },
 actions: {
  search() {
   const query = this.controller.get("model.searchQuery");
   this.transitionTo("/search-results", {
     queryParams: {
       q: query
     }
   });
  }
 }
});

2-搜索-results.js:

export default Ember.Route.extend({
 model() {
  return {
   fieldsInput: []
  };
 },
 setupController: function(controller, model) {
  this._super(controller, model);
  controller.set("model", model);
 }
});

不知道还有什么要补充的。我尝试在控制器上设置 queryParams 但它也不起作用。另外,我尝试添加

  queryParams: {
   q: ""
  },

到搜索结果路线但没有用。

在 "search-results.js" 中,您需要访问(告诉您的模型)您从 index.js 传递到文件中的参数,因此在搜索-results.js 中,您的模型应该看起来有点像这样:

model(param) {
   return {
    fieldsInput: [] 
   };
},

如果您查看上面定义 "fieldsInput" 的位置,您将想要进行某种 Ember- 数据查找(如果您不熟悉有了它,然后观看一两个 youtube 视频,它将对以后的发展有很大帮助),以利用您从 index.js 传递的 "queryParam"。

(提示:“return this.store.findRecord(someObject, param.someProperty)”可能是您想要使用的)

此外,如果您查看“this.transitionTo”下方的那一行,您的 "queryParams".

拼写错误

希望对您有所帮助。

当您为 transitionTo 方法提供 url 时,您需要通过构造包含 queryParams 来提供完整的 URL。这会起作用

this.transitionTo(`/search-results?q=${query}`);

正如您在评论中提到的,您没有在路由中指定 queryParams 属性。