4

我在 ember 1.0 之前有一个简单的 ArrayController,发现如果过滤器找到给定属性的完全匹配项,我可以将列表切掉,但我似乎找不到的是如何使用过滤器进行“喜欢”查询。

如果我用用户搜索数组,我下面的内容会起作用......

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

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

如何更改此地图功能以使用类似样式的查询,因此当我键入单词“sm”时,它仍然可以找到这两个记录

这是 jsfiddle 显示我上面在操作中显示的过滤器http://jsfiddle.net/Rf3h8/

先感谢您

4

1 回答 1

11

您可以使用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);
于 2012-09-23T23:04:02.653 回答