我是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: ""
},
到搜索结果路线但没有用。
答案 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;
希望这有帮助。