Ember TransitionTo与queryParams无法正常工作

时间:2017-11-25 22:20:35

标签: javascript ember.js

我是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: ""
  },

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

2 个答案:

答案 0 :(得分:1)

当您为transitionTo方法提供网址时,您需要通过构建包含queryParams来提供完整的网址。这将有效

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

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

答案 1 :(得分:0)

在" search-results.js"中,你需要访问(告诉你的模型)你从index.js传入文件的参数,所以在search-results.js中,你的模型应该看起来有点像这样:

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

如果你看看你已定义的地方&#34; fieldsInput&#34;上面,你想要做某种Ember-Data查找(如果你不熟悉它,那么观看一两片youtube视频,它会帮助你前进很多< / em>),使用&#34; queryParam&#34;你从index.js传递。

(提示:&#34; return this.store.findRecord(someObject, param.someProperty)&#34;可能就是您想要使用的内容)

另外,如果你查看你所写的地方&#34; this.transitionTo&#34;,你在#34; queryParams&拼写错误#34;

希望这有帮助。