gpt4 book ai didi

javascript - 在 EmberJS 中创建过滤器 - 概念

转载 作者:行者123 更新时间:2023-11-30 05:34:46 25 4
gpt4 key购买 nike

我需要一些关于如何在 EmberJS 中创建搜索过滤器的想法,以便搜索结果可以跨 View 保留。假设我有一个联系人列表,并且我过滤了该列表。假设这条路线被称为 Contacts/Index

现在我有第二条路线,叫做 Contacts/Details。一旦用户从联系人列表中选择结果,他们将被引导至此路线。现在,当他们点击“返回联系人”时,我希望仍然应用之前的过滤器,而不是显示所有联系人。

我还没有写任何代码,所以我不能提供 JSFiddle。我现在能想到的可能是创建一个全局变量来跟踪用于过滤的文本,并在转换回 Contacts/Index View 时应用它,但我不确定是否这是正确的方法。

最佳答案

这只是伪代码,并不真正关心您的过滤器类型是什么,但您可以将过滤器属性应用于 ContactsIndexController:

App.ContactsIndexController = Ember.ArrayController.extend({
//...
filter: 'name=bro',
filteredContent: function () {
if(this.get('filter')){
return this.get('content').filter//...;
} else {
return this.get('content');
}
}.property('filter')
//...//
});

无论何时更改过滤器,请确保更新 filter 属性:

this.set('filter', 'foo=bar');

然后在你的 handlebars 模板中,你总是循环遍历 filteredContent:

{{#each filteredContent}}
{{/each}}

当你在 Contacts 内部路由之间来回转换时,它应该在你返回索引时保留过滤器。

您还可以看到如何使用此模式来更进一步并从应用程序中的任何位置操作过滤器。如果您不在该 Controller 的上下文中,您仍然可以更新该属性,并且绑定(bind)将在您下次访问时适本地呈现计算属性。

来自另一个 Controller :

this.set('controllers.contacts-index.filter', 'year=20x6')

从一条路线:

this.controllerFor('contacts-index').set('filter', 'year=20x6')

从索引 Controller 中的 View :

this.set('controller.filter', 'year=20x6')

我相信你明白了。

当然,这是您可以采用的几种方法之一。我更喜欢这种特殊的模式。

希望对您有所帮助,祝您好运!

关于javascript - 在 EmberJS 中创建过滤器 - 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24593756/

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