gpt4 book ai didi

javascript - 恩伯斯 : How to filter by more than one property at once

转载 作者:数据小太阳 更新时间:2023-10-29 04:12:54 24 4
gpt4 key购买 nike

下面我确定是按单个属性进行过滤,但是如何一次性按另一个属性进行过滤?也就是说,不向用户提供包含不同搜索选项的下拉菜单示例:我的搜索词可能是姓名、电子邮件或年龄。

var search = this.controllerFor('employees').search; //can be name, email or age

employees = this.get('currentModel').filterProperty('name', search);

上面的方法可以很好地更新主列表,但我一次只能按一个属性进行过滤。

//Sample Model
App.Employee = DS.Model.extend({
email: DS.attr('string'),
name: DS.attr('string'),
age: DS.attr('number'),
})

一个想法是,如果过滤结果 length = 0 以及如何合并结果,则再次重新过滤。然而,我并不赞同这个想法,我相信 Ember 可能有更好、更优雅的方式来实现这一目标。

最佳答案

您可以使用 filter函数过滤模型中的多个属性,甚至使用 Controller 中的其他属性。例如:

想象这样一个模型:

App.Person = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
fullName: function() {
return '%@ %@'.fmt(
this.get('firstName'),
this.get('lastName')
);
}.property('firstName', 'lastName')
});

要按多个属性进行过滤,假设您有一个带有搜索功能的 Controller 类似于:

...
performSearch: function(searchTerm) {
return this.get('content').filter(function(person) {
return person.get('firstName').indexOf(searchTerm) !== -1 ||
person.get('lastName').indexOf(searchTerm) !== -1;
});
},
...

这将遍历 content 中的联系人列表并应用一个或多个过滤器,仅返回与过滤器对应的模型对象。

fiddle :http://jsfiddle.net/schawaska/ABJN7/

关于javascript - 恩伯斯 : How to filter by more than one property at once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310320/

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