Hali hazırda geliştirmekte olduğumuz projemizde karşılaştığımız bir sorun. Türkçe karakter sorunu. Hemen her dilde aynı sorun defaatle karşımıza çıkmaya devam ediyor. Bu sefer de AngularJS bizi şaşırtmadı. Sözü çok uzatmadan, aşağıdaki "decorator" ile orderBy filtresini olduğu gibi kullanmakta olduğumuz şekli ile Türkçe karakterleri tanıyıp doğru şekilde sıralama yapmasını sağlayabiliyoruz.

(function (app) { app.config(['$provide', function ($provide) { $provide.decorator('orderByFilter', ['$delegate', function ($delegate) { var decoratedFilter = function (items, field, reverse) { var filtered = []; angular.forEach(items, function (item) { filtered.push(item); }); filtered.sort(function (a, b) { var aa = a[field].toLocaleLowerCase(); var bb = b[field].toLocaleLowerCase() return aa.localeCompare(bb) }); if (reverse) filtered.reverse(); return filtered; }; return decoratedFilter; }]); }]);}(angular.module("app")));

 

Paylaştığımız bu decorator için aşağıdaki iki sayfadan faydalandık.

  1. https://muvendis.wordpress.com/2015/08/11/angular-js-filter-order-by-turkce-karakter-sorunu-cozumu-angular-js-order-by-turkish-character-problem-solution/
  2. http://stackoverflow.com/questions/12236905/how-to-extend-or-override-existing-filters-in-angularjs 

Test edilmiştir.

Umarım birilerinin işine yarar. Görüşlerinizi paylaşırsanız sevinirim.