【问题标题】:How to do a like filter with ember.js如何使用 ember.js 做一个类似的过滤器
【发布时间】:2012-09-23 17:05:53
【问题描述】:

我在 ember pre 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/

提前谢谢你

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您可以使用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);
    

    【讨论】:

    • 太棒了!谢谢(对大的 jsfiddle 感到抱歉 - 用它解决了 3 个 SO 问题,以找出我在使用这个 mixin 时遇到的几个问题)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多