Я видел несколько вопросов об одном и том же - акценты, но ни один из них не помог мне полностью.
Итак, у меня есть div с ng-repeat="resource in resources | orderBy: title | filter: search"
, упорядоченный по title
, так что остается в алфавитном порядке. За исключением того, что некоторые слова начинаются или содержат акценты, и они go в нижней части списка.
Здесь я видел, как кто-то использовал пользовательский фильтр для удаления акцентов, и я хотел сделать то же самое с фильтром orderBy. Я сделал это:
function slugifyFilter () {
return function (source) {
var accent = [
/[\300-\306]/g, /[\340-\346]/g, // A, a
/[\310-\313]/g, /[\350-\353]/g, // E, e
/[\314-\317]/g, /[\354-\357]/g, // I, i
/[\322-\330]/g, /[\362-\370]/g, // O, o
/[\331-\334]/g, /[\371-\374]/g, // U, u
/[\321]/g, /[\361]/g, // N, n
/[\307]/g, /[\347]/g, // C, c
],
noaccent = ['A','a','E','e','I','i','O','o','U','u','N','n','C','c'];
for (var i = 0; i < accent.length; i++){
source = source.replace(accent[i], noaccent[i]);
}
return source;
};
}
И это работает, если используется внутри ng-repeat:
<div ng-repeat="resource in resources | orderBy: field0 | filter: search | slugify">
{% verbatim %}{{ resource.title | slugify }}{% endverbatim %}
</div>
Все заголовки из ресурсов потеряли свои акценты, но порядок все еще был неправильным , Но я хочу сохранить акценты в списке, но работать без них в фильтре orderBy.
Затем я попытался применить его к самому ng-repeat, например:
ng-repeat="resource in resources | orderBy: (title|slugify) | filter: search"
Это дает мне ошибку: "TypeError: Cannot read property 'replace' of undefined"
Также пробовал так:
ng-repeat="resource in resources | orderBy: field0 | filter: search | slugify"
Но на этот раз у меня есть эта ошибка: TypeError: source.replace is not a function
I Я предполагаю, что это также как-то связано с source
, который является массивом массивов, например:
{
0: {id: 397, category: {…}, slug: "p397", title: Greendale, published_at: {…}, …}
1: {id: 399, category: {…}, slug: "p399", title: Lousada, published_at: {…}, …}
}
И это почти все, что я имею до сих пор.