如何使用ember.js进行类似的过滤

Tor*_*ups 4 ember.js

我在ember pre 1.0中有一个简单的ArrayController,发现如果过滤器找到给定属性的完全匹配,我可以将列表缩小,但我似乎找不到的是如何使用过滤器进行"喜欢"查询.

如果我用一个用户搜索一个数组,下面的内容是有用的......

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

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

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

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

先感谢您

Rya*_*yan 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']
Run Code Online (Sandbox Code Playgroud)

事实上你甚至可以重构这个

var filtered = names.filter(regex.test, regex);
Run Code Online (Sandbox Code Playgroud)