AngularJs搜索并忽略变音符号

时间:2014-06-23 10:44:19

标签: angularjs angularjs-filter

我的想法是有一个单词列表,其中有很多变音符号或重音符号。例如,而不是写RóseRóse我想写 Rose 并在结果中有Róse 。 首先,我用Google搜索,here in StackOverflow问题得到了部分解决。

但如果我有这样的数组check jsFiddle

,该怎么办?
     $scope.names = [{name: 'Jamón', surname: 'Géroux'},
    {name: 'Andrés', surname: 'Guérin'},
    {name: 'Cristián', surname: 'Róse'},
    {name: 'Fernán', surname:'Raúlien'}];
    };

然后解决方案不起作用:jsFiddle。 如果我有,例如,自定义过滤器突出显示:

     <td ng-bind-html="name.name | highlight:search.$"></td>

我已经知道了,这里的所有例子https://builtwith.angularjs.org都有与变音符号/重音符号相同的问题。只有一个网站http://illicoweb.videotron.com使用“简单技术”和JavaScript函数以及str.replace。

关于真正简单快速解决方案的任何想法?没有存储带有变音/重音符号的两个表而没有它。

提前致谢!

1 个答案:

答案 0 :(得分:4)

我已根据您对过滤器的修改更新了此JSFiddle。我只是简单地修改过滤器以搜索全名,而不仅仅是所示的第一个名称:

$scope.ignoreAccents = function(item) {               
    if (!$scope.search)
        return true;

    var fullName = item.name + ' ' + item.surname;
    var text = removeAccents(fullName.toLowerCase());
    var search = removeAccents($scope.search.toLowerCase());
    return text.indexOf(search) > -1;
};

这种方法应该可以否定对两个单独表格的需求。