AngularJs中的自定义排序

我有像JSON字段

{"facebook":"aravind@facebook.com", "homeAddress":"26, New Street, Blr", "officeAddress":"31, Old Office Street, Blr", "city":"Blr", name:"aravind" }, {"facebook":"ashok@facebook.com", "homeAddress":"26, New Street, che", "officeAddress":"31, Old Office Street, che", "city":"che", name:"ashok" } 

在Angular js中,我默认按名称命令字段,我有一个文本框和按钮

   

当我在文本框中输入位置后单击按钮(对于Ex:blr)。 列表按位置排序。

目前我按位置完成了filter。 但我不想过滤。 我想要对列表进行排序

  var locationFilterHome = {homeAddress: location}; filterData = $filter('filter')(data, locationFilterOffice) 

我使用上面的代码进行过滤。 如何根据位置进行排序

根据我的理解,您希望询问如何按控制器中的位置对数据进行排序。 一种方法是使用’orderBy’filter。 您可以像使用“filter”filter一样使用它: filterData=$filter('orderBy')(data,'location');

请查看此插件,了解我想说的内容: http : //plnkr.co/edit/BU4DaxlBSNcmRkXG6krc?p = preview

 angular.module('app',[]) .controller('mainCtrl',function($filter){ var data=[{"facebook":"aravind@facebook.com", "homeAddress":"26, New Street, Blr", "officeAddress":"31, Old Office Street, Blr", "city":"Zlr", name:"aravind" }, {"facebook":"ashok@facebook.com", "homeAddress":"26, New Street, che", "officeAddress":"31, Old Office Street, che", "city":"che", name:"ashok" }]; var modifiedData=$filter('orderBy')(data,'city'); console.log(modifiedData); }) 

你可以像这样创建filter!!

`bizBrainCommon.filter(’test’,function(){return function(items,field,sortingValue){var filtered = [];

  if(!field || !sortingValue) return items; angular.forEach(items, function (item) { filtered.push(item); }); filtered.sort(function (a, b) { var upA = a[field].toUpperCase(); if (upA > sortingValue.toUpperCase() || upA < sortingValue.toUpperCase()) return 1; if (upA == sortingValue.toUpperCase()) return -1; }); return filtered; }; 

});`

HTML将如下:

ng-repeat="(id, user) in users |test:'fName': search"

希望对你有帮助!!