我在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)
| 归档时间: |
|
| 查看次数: |
3077 次 |
| 最近记录: |