gpt4 book ai didi

ember.js - Ember 路由中的查询参数

转载 作者:行者123 更新时间:2023-12-02 05:52:48 27 4
gpt4 key购买 nike

有没有办法在 ember 路由中使用查询参数。在我的应用程序中有一个产品搜索路线,用户可以在其中搜索带有输入字段的产品。当用户导航到其中一个找到的产品然后点击后退按钮时,之前的搜索就消失了,因为路由的 url 是 products。那么有没有办法像 products?search=shirts 那样将用户查询存储到路由中,以便在用户返回此页面时显示之前的结果?

最佳答案

除非我误解了你想要什么,或者除非因为业务需求而必须这样做,否则我不会为特定搜索类别创建路由,而是创建一个计算属性(或一个带有 observe 的函数>) 由搜索关键字过滤(作为我的 Controller 的属性)。类似于以下内容:

App.SomeController = Em.ArrayController.extend({
searchKeyword: '',
filteredSearchResults: function() {
var keyword = this.get('searchKeyword');
if(keyword.length > 0) {
// filtered search
return this.get('content').filter(function(item) {
// do your own filtering logic here
return item.get('name').indexOf(keyword) !== -1
});
} else {
// unfiltered search
return this.get('content');
}
}.property('content', 'searchKeyword');
});

然后在 Handlebars 中我会像这样迭代

{{#each filteredSearchResults}} 
... do stuff here...
{{/each}}

搜索文本字段应绑定(bind)到 Controller 的 searchKeyword 属性,因此当您从一个路由转换到另一个路由时,搜索词不会丢失。这样做的问题是,除非您明确去清理该属性,否则搜索词不会被删除(从技术上讲,您可以对特定场景进行一些逻辑/检查,在这些场景中您手动删除该字段/绑定(bind)的值);

关于ember.js - Ember 路由中的查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18067243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com