2012-09-23 39 views
4

我有一个简单的数组控制器在烬前1.0,并发现如果筛选器找到一个给定的属性完全匹配,我可以砍下列表,但我看起来不像找到是如何做一个“喜欢”与过滤器的查询。如何做一个像ember.js过滤器

如果我搜索与用户的数组我有下面的作品...

filtered = ['id', 'username'].map(function(property) { 
    return self.get('content').filterProperty(property, filter); 
}); 

...和一些用户具有相同的用户名。例如=>如果我通过“smith”搜索/过滤它将返回两个记录,因为“username”属性与“smith”具有完全匹配

如何更改此映射函数以使用类似样式查询所以当我键入单词“SM”它仍然认为这两种记录

这里是的jsfiddle显示我在行动上面显示过滤器http://jsfiddle.net/Rf3h8/

预先感谢您

回答

10

可以使用RegExp对象测试匹配的数据片段。由于您正在编写自己的过滤逻辑,因此您必须使用filter函数。我更新了你的小提琴来完成这项工作:http://jsfiddle.net/Rf3h8/1/

你的小提琴包含很多代码,可能很难让其他人遵循。以下是使用RegExp过滤数组的一个非常简单的例子。

var names = ['ryan', 'toran', 'steve', 'test']; 
var regex = new RegExp('ry'); 

var filtered = names.filter(function(person) { 
    return regex.test(person); 
}); 

filtered // => ['ryan'] 

事实上,你甚至可以重构这是

var filtered = names.filter(regex.test, regex); 
+0

真棒!谢谢(对于大型的jsfiddle感到抱歉 - 使用它总共有3个问题来解决我使用这个mixin的几个问题) –

相关问题